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冒泡排序算法的实现代码
Nov 21 Python
python实现博客文章爬虫示例
Feb 26 Python
python多进程操作实例
Nov 21 Python
使用Python实现一个简单的项目监控
Mar 31 Python
Python中关于字符串对象的一些基础知识
Apr 08 Python
Python中encode()方法的使用简介
May 18 Python
Django模板变量如何传递给外部js调用的方法小结
Jul 24 Python
pycharm设置注释颜色的方法
May 23 Python
python实现在函数中修改变量值的方法
Jul 16 Python
python使用if语句实现一个猜拳游戏详解
Aug 27 Python
使用Python刷淘宝喵币(低阶入门版)
Oct 30 Python
Pytorch1.5.1版本安装的方法步骤
Dec 31 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中将数组转成XML格式的实现代码
2011/08/08 PHP
PHP禁止页面缓存的代码
2011/10/23 PHP
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
php遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
CI框架AR操作(数组形式)实现插入多条sql数据的方法
2016/05/18 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
JS控制表格隔行变色
2006/06/26 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
2012/11/11 Javascript
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
让input框实现类似百度的搜索提示(基于jquery事件监听)
2014/01/31 Javascript
jQuery实现连续动画效果实例分析
2015/10/09 Javascript
JavaScript中利用各种循环进行遍历的方式总结
2015/11/10 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
[01:13:01]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第三场
2018/04/05 DOTA
python中正则表达式的使用详解
2014/10/17 Python
Python实现平行坐标图的绘制(plotly)方式
2019/11/22 Python
Python环境下安装PyGame和PyOpenGL的方法
2020/03/25 Python
python中return如何写
2020/06/18 Python
Python tempfile模块生成临时文件和临时目录
2020/09/30 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
Notino法国:购买香水和化妆品
2019/04/15 全球购物
俄语翻译实习生的自我评价分享
2013/11/06 职场文书
策划主管的工作职责
2013/11/24 职场文书
往来会计岗位职责
2013/12/19 职场文书
文明风采获奖感言
2014/02/18 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
2014年会计工作总结
2014/11/27 职场文书
初中军训感想
2015/08/07 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
mysql 排序失效
2022/05/20 MySQL