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通过websocket与js客户端通信示例分析
Jun 25 Python
Python探索之静态方法和类方法的区别详解
Oct 27 Python
python读取文本绘制动态速度曲线
Jun 21 Python
python实现图片批量压缩程序
Jul 23 Python
浅述python2与python3的简单区别
Sep 19 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
Oct 14 Python
Python实现简单的列表冒泡排序和反转列表操作示例
Jul 10 Python
python-docx文件定位读取过程(尝试替换)
Feb 13 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
pycharm下pyqt4安装及环境配置的教程
Apr 24 Python
Python 可视化神器Plotly详解
Dec 26 Python
详解如何用Python实现感知器算法
Jun 18 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
制作美丽的拉花
2021/03/03 冲泡冲煮
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
php命令行使用方法和命令行参数说明
2014/04/08 PHP
php获取文章上一页与下一页的方法
2014/12/01 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
php学习笔记之字符串常见操作总结
2019/07/16 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
在JavaScript中获取请求的URL参数[正则]
2010/12/25 Javascript
Extjs4 GridPanel 的几种样式使用介绍
2013/04/18 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
2014/02/21 Javascript
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
jQuery大于号(>)选择器的作用解释
2015/01/13 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
2016/09/23 Javascript
React Native预设占位placeholder的使用
2017/09/28 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
2018/12/18 Javascript
详解原生JS动态添加和删除类
2019/03/26 Javascript
利用js-cookie实现前端设置缓存数据定时失效
2019/06/18 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
python flask 多对多表查询功能
2017/06/25 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
解决Python print输出不换行没空格的问题
2018/11/14 Python
Python异常模块traceback用法实例分析
2019/10/22 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
创伤外科专业推荐信范文
2013/11/19 职场文书
检察机关个人对照检查材料
2014/09/15 职场文书
办公室班子四风问题对照检查材料
2014/10/04 职场文书
2014年体育教学工作总结
2014/12/09 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书