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自定义scrapy中间模块避免重复采集的方法
Apr 07 Python
详谈Python高阶函数与函数装饰器(推荐)
Sep 30 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
Nov 11 Python
给你选择Python语言实现机器学习算法的三大理由
Nov 15 Python
Django中的Signal代码详解
Feb 05 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
Apr 23 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 Python
python实现通过队列完成进程间的多任务功能示例
Oct 28 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
Mar 14 Python
python基本算法之实现归并排序(Merge sort)
Sep 01 Python
如何利用python检测图片是否包含二维码
Oct 15 Python
python 日志模块logging的使用场景及示例
Jan 04 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初学者们头痛的十四个问题
2007/01/15 PHP
php数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
PHP模板引擎Smarty的缓存使用总结
2014/04/24 PHP
php校验公钥是否可用的实例方法
2019/09/17 PHP
laravel实现上传图片的两种方式小结
2019/10/12 PHP
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
在JavaScript中操作时间之getMonth()方法的使用
2015/06/10 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
轮播图组件js代码
2016/08/08 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
JavaScript中Require调用js的实例分享
2017/10/27 Javascript
vue组件watch属性实例讲解
2017/11/07 Javascript
微信小程序实现传参数的几种方法示例
2018/01/10 Javascript
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
微信小程序实现定位及到指定位置导航的示例代码
2019/08/20 Javascript
Layui给switch添加响应事件的例子
2019/09/03 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
详解在Python程序中自定义异常的方法
2015/10/16 Python
详解Python的Flask框架中的signals信号机制
2016/06/13 Python
浅析Python中return和finally共同挖的坑
2017/08/18 Python
Atom的python插件和常用插件说明
2018/07/08 Python
django框架之cookie/session的使用示例(小结)
2018/10/15 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
2019/04/10 Python
python使用百度文字识别功能方法详解
2019/07/23 Python
python 使用shutil复制图片的例子
2019/12/13 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
小学少先队活动方案
2014/02/18 职场文书
演讲比赛的活动方案
2014/08/28 职场文书
师范生见习报告
2014/10/31 职场文书
2014年优秀党员材料
2014/12/18 职场文书
离婚起诉书范本
2015/05/18 职场文书
浅谈sql_@SelectProvider及使用注意说明
2021/08/04 Java/Android