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交换变量
Sep 06 Python
在ironpython中利用装饰器执行SQL操作的例子
May 02 Python
python+Django+apache的配置方法详解
Jun 01 Python
使用python3.5仿微软记事本notepad
Jun 15 Python
详解Python import方法引入模块的实例
Aug 02 Python
Python爬虫实现百度图片自动下载
Feb 04 Python
使用Python监视指定目录下文件变更的方法
Oct 15 Python
浅析Python 实现一个自动化翻译和替换的工具
Apr 14 Python
python print出共轭复数的方法详解
Jun 25 Python
使用Python的Turtle绘制哆啦A梦实例
Nov 21 Python
numpy np.newaxis 的实用分享
Nov 30 Python
python 实现分组求和与分组累加求和代码
May 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
详解WordPress开发中用于获取分类及子页面的函数用法
2016/01/08 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
2019/10/15 PHP
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
2013/01/02 Javascript
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
用js的for循环获取radio选中的值
2013/10/21 Javascript
node.js中的fs.readdir方法使用说明
2014/12/17 Javascript
jQuery随机密码生成的方法
2015/03/09 Javascript
ECHO.js 纯javascript轻量级延迟加载的实例代码
2016/05/24 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
2016/10/17 Javascript
Bootstrap基本模板的使用和理解1
2016/12/14 Javascript
Node.js实现注册邮箱激活功能的方法示例
2018/03/23 Javascript
基于D3.js实现时钟效果
2018/07/17 Javascript
微信小程序实现滚动Tab选项卡
2020/11/16 Javascript
python验证码识别的实例详解
2016/09/09 Python
python批量替换多文件字符串问题详解
2018/04/22 Python
Python面向对象之反射/自省机制实例分析
2018/08/24 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
Python如何使用BeautifulSoup爬取网页信息
2019/11/26 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
UNIX操作系统结构由哪几部分组成
2016/02/17 面试题
应届毕业生简历自我评价
2014/01/31 职场文书
竞选班委演讲稿
2014/04/28 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
2014年电厂工作总结
2014/12/04 职场文书
优秀毕业生主要事迹材料
2015/11/04 职场文书
小学数学新课改心得体会
2016/01/22 职场文书
Pytorch中的数据集划分&正则化方法
2021/05/27 Python