python实现逻辑回归的示例


Posted in Python onOctober 09, 2020

代码

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets.samples_generator import make_classification


def initialize_params(dims):
  w = np.zeros((dims, 1))
  b = 0
  return w, b

def sigmoid(x):
  z = 1 / (1 + np.exp(-x))
  return z

def logistic(X, y, w, b):
  num_train = X.shape[0]
  y_hat = sigmoid(np.dot(X, w) + b)
  loss = -1 / num_train * np.sum(y * np.log(y_hat) + (1-y) * np.log(1-y_hat))
  cost = -1 / num_train * np.sum(y * np.log(y_hat) + (1 - y) * np.log(1 - y_hat))
  dw = np.dot(X.T, (y_hat - y)) / num_train
  db = np.sum(y_hat - y) / num_train
  return y_hat, cost, dw, db


def linear_train(X, y, learning_rate, epochs):
  # 参数初始化
  w, b = initialize_params(X.shape[1])

  loss_list = []
  for i in range(epochs):
    # 计算当前的预测值、损失和梯度
    y_hat, loss, dw, db = logistic(X, y, w, b)
    loss_list.append(loss)

    # 基于梯度下降的参数更新
    w += -learning_rate * dw
    b += -learning_rate * db

    # 打印迭代次数和损失
    if i % 10000 == 0:
      print("epoch %d loss %f" % (i, loss))

    # 保存参数
    params = {
      'w': w,
      'b': b
    }

    # 保存梯度
    grads = {
      'dw': dw,
      'db': db
    }

  return loss_list, loss, params, grads

def predict(X, params):
  w = params['w']
  b = params['b']
  y_pred = sigmoid(np.dot(X, w) + b)
  return y_pred


if __name__ == "__main__":
  # 生成数据
  X, labels = make_classification(n_samples=100,
                  n_features=2,
                  n_informative=2,
                  n_redundant=0,
                  random_state=1,
                  n_clusters_per_class=2)
  print(X.shape)
  print(labels.shape)

  # 生成伪随机数
  rng = np.random.RandomState(2)
  X += 2 * rng.uniform(size=X.shape)

  # 划分训练集和测试集
  offset = int(X.shape[0] * 0.9)
  X_train, y_train = X[:offset], labels[:offset]
  X_test, y_test = X[offset:], labels[offset:]
  y_train = y_train.reshape((-1, 1))
  y_test = y_test.reshape((-1, 1))
  print('X_train=', X_train.shape)
  print('y_train=', y_train.shape)
  print('X_test=', X_test.shape)
  print('y_test=', y_test.shape)

  # 训练
  loss_list, loss, params, grads = linear_train(X_train, y_train, 0.01, 100000)
  print(params)

  # 预测
  y_pred = predict(X_test, params)
  print(y_pred[:10])

以上就是python实现逻辑回归的示例的详细内容,更多关于python 逻辑回归的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python入门篇之对象类型
Oct 17 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
Dec 10 Python
Python新手们容易犯的几个错误总结
Apr 01 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
May 21 Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
Mar 11 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
Mar 16 Python
pandas dataframe 中的explode函数用法详解
May 18 Python
在tensorflow以及keras安装目录查询操作(windows下)
Jun 19 Python
calendar在python3时间中常用函数举例详解
Nov 18 Python
Python生成九宫格图片的示例代码
Apr 14 Python
解决Pytorch修改预训练模型时遇到key不匹配的情况
Jun 05 Python
Django生成数据库及添加用户报错解决方案
Oct 09 #Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
Oct 09 #Python
python实现数据结构中双向循环链表操作的示例
Oct 09 #Python
Python collections模块的使用方法
Oct 09 #Python
python爬取代理IP并进行有效的IP测试实现
Oct 09 #Python
Python中Selenium模块的使用详解
Oct 09 #Python
python利用platform模块获取系统信息
Oct 09 #Python
You might like
基于php冒泡排序算法的深入理解
2013/06/09 PHP
PHP实现适用于自定义的验证码类
2016/06/15 PHP
微信支付开发维权通知实例
2016/07/12 PHP
php插入含有特殊符号数据的处理方法
2016/11/24 PHP
PHP实现通过二维数组键值获取一维键名操作示例
2019/10/11 PHP
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
jquery命令汇总,方便使用jquery的朋友
2012/06/26 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
JavaScript获取当前日期是星期几的方法
2015/04/06 Javascript
jquery 遍历数组 each 方法详解
2016/05/25 Javascript
easyui-datagrid开发实践(总结)
2017/08/02 Javascript
p5.js入门教程和基本形状绘制
2018/03/15 Javascript
微信小程序Echarts覆盖正常组件问题解决
2019/07/13 Javascript
在vue中封装方法以及多处引用该方法详解
2020/08/14 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
ES11新增的这9个新特性,你都掌握了吗
2020/10/15 Javascript
微信小程序绘制半圆(弧形)进度条
2020/11/18 Javascript
[09:22]2014DOTA2西雅图国际邀请赛 主赛事第二日TOPPLAY
2014/07/21 DOTA
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
Python单链表简单实现代码
2016/04/27 Python
Python函数的周期性执行实现方法
2016/08/13 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
Python iter()函数用法实例分析
2018/03/17 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
在Pycharm中调试Django项目程序的操作方法
2019/07/17 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
校园报刊亭创业计划书
2014/01/02 职场文书
车队司机自我鉴定
2014/03/02 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL