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正则表达式re模块详解
Jun 25 Python
python base64 decode incorrect padding错误解决方法
Jan 08 Python
python使用post提交数据到远程url的方法
Apr 29 Python
python字符类型的一些方法小结
May 16 Python
Python爬虫包BeautifulSoup学习实例(五)
Jun 17 Python
Python面向对象程序设计构造函数和析构函数用法分析
Apr 12 Python
Python3 实现串口两进程同时读写
Jun 12 Python
Django后端发送小程序微信模板消息示例(服务通知)
Dec 17 Python
pytorch中torch.max和Tensor.view函数用法详解
Jan 03 Python
根据tensor的名字获取变量的值方式
Jan 04 Python
python 如何调用远程接口
Sep 11 Python
python3访问字典里的值实例方法
Nov 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
php+mysql写的简单留言本实例代码
2008/07/25 PHP
php中用date函数获取当前时间有误的解决办法
2013/08/02 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
php在apache环境下实现gzip配置方法
2015/04/02 PHP
PHP的压缩函数实现:gzencode、gzdeflate和gzcompress的区别
2016/01/27 PHP
我见过最全的个人js加解密功能页面
2007/12/12 Javascript
简单的js分页脚本
2009/05/21 Javascript
JavaScript作用域链示例分享
2014/05/27 Javascript
JS生成随机字符串的多种方法
2014/06/10 Javascript
drag-and-drop实现图片浏览器预览
2015/08/06 Javascript
JS和canvas实现俄罗斯方块
2017/03/14 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
Vuepress 搭建带评论功能的静态博客的实现
2019/02/17 Javascript
通过实例了解js函数中参数的传递
2019/06/15 Javascript
解决vue做详情页跳转的时候使用created方法 数据不会更新问题
2020/07/24 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
Vue实现一种简单的无限循环滚动动画的示例
2021/01/10 Vue.js
[48:48]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Dream TIME
2014/05/21 DOTA
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
使用Protocol Buffers的C语言拓展提速Python程序的示例
2015/04/16 Python
使用SAE部署Python运行环境的教程
2015/05/05 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
2018/10/14 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
2020/12/04 Python
GIVENCHY纪梵希官方旗舰店:高定彩妆与贵族护肤品
2018/04/16 全球购物
先进个人评语大全
2015/01/04 职场文书
接收函格式
2015/01/30 职场文书
开平碉楼导游词
2015/02/06 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
庆祝教师节主持词
2015/07/06 职场文书
经销商会议开幕词
2016/03/04 职场文书
python操作xlsx格式文件并读取
2021/06/02 Python
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸
阿里云 Windows server 2019 配置FTP
2022/04/28 Servers
MutationObserver在页面水印实现起到的作用详解
2022/07/07 Javascript