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实现红包裂变算法
Feb 16 Python
python机器学习实战之K均值聚类
Dec 20 Python
浅谈Django的缓存机制
Aug 23 Python
python去掉 unicode 字符串前面的u方法
Oct 21 Python
Python2 Selenium元素定位的实现(8种)
Feb 25 Python
python实现可逆简单的加密算法
Mar 22 Python
Django的用户模块与权限系统的示例代码
Jul 24 Python
Django 在iframe里跳转顶层url的例子
Aug 21 Python
解决tensorflow由于未初始化变量而导致的错误问题
Jan 06 Python
Python3变量与基本数据类型用法实例分析
Feb 14 Python
使用python无账号无限制获取企查查信息的实例代码
Apr 17 Python
Python 使用 PyQt5 开发的关机小工具分享
Jul 16 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函数utf8转gb2312编码
2006/12/21 PHP
Drupal简体中文语言包安装教程
2014/09/27 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
php技巧小结【推荐】
2017/01/19 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
2019/05/27 PHP
thinkphp5 模型实例化获得数据对象的教程
2019/10/18 PHP
javascript判断单选框或复选框是否选中方法集锦
2007/04/04 Javascript
javascript 三种方法实现获得和设置以及移除元素属性
2013/03/20 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
js实现仿阿里巴巴城市选择框效果实例
2015/06/24 Javascript
微信小程序表单验证错误提示效果
2017/05/19 Javascript
Vue写一个简单的倒计时按钮功能
2018/04/20 Javascript
jQuery事件委托代码实践详解
2019/06/21 jQuery
vue学习之Vue-Router用法实例分析
2020/01/06 Javascript
Vue.js仿Select下拉框效果
2020/02/18 Javascript
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
django允许外部访问的实例讲解
2018/05/14 Python
python 将有序数组转换为二叉树的方法
2019/03/26 Python
python flask安装和命令详解
2019/04/02 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
售后专员岗位职责
2013/12/08 职场文书
党委书记个人检查对照材料思想汇报
2014/10/11 职场文书
习总书记三严三实学习心得体会
2014/10/13 职场文书
房屋所有权证明
2014/10/20 职场文书
财务会计实训报告
2014/11/05 职场文书
班主任工作实习计划
2015/01/16 职场文书
小学教研工作总结2015
2015/05/13 职场文书
java高级用法JNA强大的Memory和Pointer
2022/04/19 Java/Android
MySQL数据库简介与基本操作
2022/05/30 MySQL
基于Python实现nc批量转tif格式
2022/08/14 Python