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读写Redis数据库操作示例
Mar 18 Python
Python中实现三目运算的方法
Jun 21 Python
Python读取网页内容的方法
Jul 30 Python
python对json的相关操作实例详解
Jan 04 Python
Python文本特征抽取与向量化算法学习
Dec 22 Python
python 读取文本文件的行数据,文件.splitlines()的方法
Jul 12 Python
python实现的自动发送消息功能详解
Aug 15 Python
Python内置加密模块用法解析
Nov 25 Python
pytorch标签转onehot形式实例
Jan 02 Python
解析Tensorflow之MNIST的使用
Jun 30 Python
python 监控logcat关键字功能
Sep 04 Python
Python中threading库实现线程锁与释放锁
May 17 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--用万网的接口实现域名查询功能
2012/12/13 PHP
PHP如何利用P3P实现跨域
2013/08/24 PHP
PHP迭代器实现斐波纳契数列的函数
2013/11/12 PHP
php模板原理讲解
2013/11/13 PHP
PHP实现的多彩标签效果代码分享
2014/08/21 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
如何快速的呈现我们的网页的技巧整理
2007/07/01 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
关于Node.js的events.EventEmitter用法介绍
2017/04/01 Javascript
Zepto实现密码的隐藏/显示
2017/04/07 Javascript
bootstrap paginator分页插件的两种使用方式实例详解
2017/11/14 Javascript
详解angular2.x创建项目入门指令
2018/10/11 Javascript
详解Vue前端对axios的封装和使用
2019/04/01 Javascript
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
Django--权限Permissions的例子
2019/08/28 Python
Pytorch之contiguous的用法
2019/12/31 Python
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
python之MSE、MAE、RMSE的使用
2020/02/24 Python
python3 配置logging日志类的操作
2020/04/08 Python
Python通过len函数返回对象长度
2020/10/22 Python
Made in Design德国:设计师家具、灯具和装饰
2019/10/31 全球购物
澳洲Chemist Direct药房中文网:澳洲大型线上直邮药房
2019/11/04 全球购物
英文版区域经理求职信
2013/10/23 职场文书
初婚未育未抱养证明
2014/01/12 职场文书
劳资协议书范本
2014/04/23 职场文书
项目经理任命书
2014/06/04 职场文书
2014银行领导班子群众路线对照检查材料思想汇报
2014/09/17 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
个人承诺书格式范文
2015/04/29 职场文书
退休教师欢送会致辞
2015/07/31 职场文书
感恩教师节主题班会
2015/08/12 职场文书
2019班干部竞选演讲稿范本!
2019/07/08 职场文书