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中super的用法实例
May 28 Python
Python多层装饰器用法实例分析
Feb 09 Python
mac下如何将python2.7改为python3
Jul 13 Python
Random 在 Python 中的使用方法
Aug 09 Python
Python3 读、写Excel文件的操作方法
Oct 20 Python
关于python之字典的嵌套,递归调用方法
Jan 21 Python
python基础知识(一)变量与简单数据类型详解
Apr 17 Python
python 内置函数汇总详解
Sep 16 Python
从numpy数组中取出满足条件的元素示例
Nov 26 Python
python map比for循环快在哪
Sep 21 Python
python爬取豆瓣电影TOP250数据
May 23 Python
Python进行区间取值案例讲解
Aug 02 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导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
JS图片根据鼠标滚动延时加载的实例代码
2013/07/13 Javascript
js 上下左右键控制焦点(示例代码)
2013/12/14 Javascript
JavaScript中遍历对象的property的3种方法介绍
2014/12/30 Javascript
Javascript实现Web颜色值转换
2015/02/05 Javascript
js实现字符串转日期格式的方法
2015/05/20 Javascript
JS模式之单例模式基本用法
2015/06/30 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
AngularJS中使用HTML5手机摄像头拍照
2016/02/22 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
2016/12/02 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
vue组件间通信解析
2017/03/01 Javascript
jQuery实现下拉菜单的实例代码
2017/06/19 jQuery
JS+canvas绘制的动态机械表动画效果
2017/09/12 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
js module大战
2019/04/19 Javascript
手把手教你 CKEDITOR 4 扩展插件制作
2019/06/18 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
深入浅析python定时杀进程
2016/06/06 Python
python 把数据 json格式输出的实例代码
2016/10/31 Python
Python 实现在文件中的每一行添加一个逗号
2018/04/29 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
戴森西班牙官网:Dyson西班牙
2020/02/04 全球购物
班级文化建设标语
2014/06/23 职场文书
农村党支部书记四风问题个人对照检查材料
2014/09/21 职场文书
小学课改工作总结
2015/08/13 职场文书
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫