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 相关文章推荐
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
python实现折半查找和归并排序算法
Apr 14 Python
Python yield与实现方法代码分析
Feb 06 Python
每天迁移MySQL历史数据到历史库Python脚本
Apr 13 Python
python挖矿算力测试程序详解
Jul 03 Python
对Python函数设计规范详解
Jul 19 Python
Python如何使用argparse模块处理命令行参数
Dec 11 Python
Python字符串中删除特定字符的方法
Jan 15 Python
Python多进程编程multiprocessing代码实例
Mar 12 Python
Django 实现 Websocket 广播、点对点发送消息的代码
Jun 03 Python
Python局部变量与全局变量区别原理解析
Jul 14 Python
Python基于pillow库实现生成图片水印
Sep 14 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日期时间如何转换(UNIX时间戳和格式化日期)
2012/07/15 PHP
php隐藏IP地址后两位显示为星号的方法
2014/11/21 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
深入讲解PHP的对象注入(Object Injection)
2017/03/01 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
javascript appendChild,innerHTML,join性能比较代码
2009/08/29 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
JavaScript操作Cookie详解
2015/02/28 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
vue-cli3全面配置详解
2018/11/14 Javascript
jQuery实现可编辑的表格
2019/12/11 jQuery
在Python的Django框架中编写编译函数
2015/07/20 Python
基于Python实现文件大小输出
2016/01/11 Python
Python浅复制中对象生存周期实例分析
2018/04/02 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
2020/01/07 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
浅谈keras使用中val_acc和acc值不同步的思考
2020/06/18 Python
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
荷兰皇家航空公司中国官网:KLM中国
2017/12/13 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
描述RIP和OSPF区别以及特点
2015/01/17 面试题
国外的一些J2EE面试题一
2012/10/13 面试题
银行学习十八大感想
2014/01/11 职场文书
《草虫的村落》教学反思
2014/02/16 职场文书
人力资源职位说明书
2014/07/29 职场文书
民主生活会对照检查材料(统计局)
2014/09/21 职场文书
中学团支部工作总结
2015/08/13 职场文书
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server