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 获取 Linux 系统信息的代码
Jul 13 Python
python比较两个列表是否相等的方法
Jul 28 Python
详解Python异常处理中的Finally else的功能
Dec 29 Python
和孩子一起学习python之变量命名规则
May 27 Python
python自动化生成IOS的图标
Nov 13 Python
Python实现操纵控制windows注册表的方法分析
May 24 Python
python+openCV利用摄像头实现人员活动检测
Jun 22 Python
python实现BP神经网络回归预测模型
Aug 09 Python
python运用sklearn实现KNN分类算法
Oct 16 Python
Selenium启动Chrome时配置选项详解
Mar 18 Python
详解Django配置JWT认证方式
May 09 Python
详解Python内置模块Collections
Mar 22 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去除字符串中空字符的常用方法小结
2015/03/17 PHP
Laravel 5框架学习之Laravel入门和新建项目
2015/04/07 PHP
php函数传值的引用传递注意事项分析
2016/06/25 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
PHP微信模板消息操作示例
2017/06/29 PHP
js 对象是否存在判断
2009/07/15 Javascript
AngularJS入门教程(二):AngularJS模板
2014/12/06 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
jQuery的css() 方法使用指南
2015/05/03 Javascript
JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性
2015/12/26 Javascript
BootStrap制作导航条实例代码
2016/05/06 Javascript
深入剖析JavaScript:Object类型
2016/05/10 Javascript
jsTree使用记录实例
2016/12/01 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
python实现一次创建多级目录的方法
2015/05/15 Python
Python实现网站注册验证码生成类
2017/06/08 Python
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
Pycharm更换python解释器的方法
2018/10/29 Python
详解Python self 参数
2019/08/30 Python
python圣诞树编写实例详解
2020/02/13 Python
python实现将两个文件夹合并至另一个文件夹(制作数据集)
2020/04/03 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
SQL语言面试题
2013/08/27 面试题
元旦晚会邀请函
2014/01/27 职场文书
职工运动会感言
2014/02/07 职场文书
优良学风班申请材料
2014/02/13 职场文书
法律进企业活动方案
2014/03/04 职场文书
学生请假条
2014/04/11 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
行政人事专员岗位职责
2015/04/07 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
2022/06/01 Java/Android