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 相关文章推荐
linux系统使用python监测网络接口获取网络的输入输出
Jan 15 Python
pymssql数据库操作MSSQL2005实例分析
May 25 Python
在Django的form中使用CSS进行设计的方法
Jul 18 Python
使用Django的模版来配合字符串翻译工作
Jul 27 Python
Python解决走迷宫问题算法示例
Jul 27 Python
python使用Matplotlib画条形图
Mar 25 Python
numpy.where() 用法详解
May 27 Python
Python Web框架之Django框架cookie和session用法分析
Aug 16 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
Django调用百度AI接口实现人脸注册登录代码实例
Apr 23 Python
jupyter notebook oepncv 显示一张图像的实现
Apr 24 Python
Python return语句如何实现结果返回调用
Oct 15 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
解析coreseek for sphinx的使用
2013/06/21 PHP
实例讲解PHP表单处理
2019/02/15 PHP
javascript prototype原型操作笔记
2009/12/07 Javascript
jquery 插件学习(一)
2012/08/06 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
jquery uploadify 在FF下无效的解决办法
2014/09/26 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
Spring mvc 接收json对象
2015/12/10 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
基于input框覆盖掉数字英文的实例讲解
2017/07/21 Javascript
json2.js 入门教程之使用方法与实例分析
2017/09/14 Javascript
bmob js-sdk 在vue中的使用教程
2018/01/21 Javascript
mint-ui 时间插件使用及获取选择值的方法
2018/02/09 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
Python 的内置字符串方法小结
2016/03/15 Python
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
Python转换时间的图文方法
2019/07/01 Python
Python 私有化操作实例分析
2019/11/21 Python
python 动态绘制爱心的示例
2020/09/27 Python
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
财务副总经理工作职责
2013/11/25 职场文书
俄语专业职业生涯规划
2014/02/26 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
解除劳动合同证明书模板
2014/11/20 职场文书
2014年工程工作总结
2014/11/25 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
岳庙导游词
2015/02/04 职场文书
员工辞职信范文
2015/03/02 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
公司新员工欢迎词
2015/09/30 职场文书
Python爬取某拍短视频
2021/06/11 Python
mysql连接查询中and与where的区别浅析
2021/07/01 MySQL
面试提问mysql一张表到底能存多少数据
2022/03/13 MySQL