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写日志封装类实例
Jun 28 Python
Python随机数用法实例详解【基于random模块】
Apr 18 Python
import的本质解析
Oct 30 Python
python爬取个性签名的方法
Jun 17 Python
python使用tornado实现登录和登出
Jul 28 Python
python利用多种方式来统计词频(单词个数)
May 27 Python
python3实现高效的端口扫描
Aug 31 Python
浅谈tensorflow 中的图片读取和裁剪方式
Jun 30 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
Jul 03 Python
如何基于Django实现上下文章跳转
Sep 16 Python
详解Scrapy Redis入门实战
Nov 18 Python
使用Python webdriver图书馆抢座自动预约的正确方法
Mar 04 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的单引号和双引号 字符串效率
2009/05/27 PHP
PHP漏洞全解(详细介绍)
2012/11/13 PHP
php使用curl发送json格式数据实例
2013/12/17 PHP
基于PHP后台的Android新闻浏览客户端
2016/05/23 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
JavaScript prototype对象的属性说明
2010/03/13 Javascript
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
ko knockoutjs动态属性绑定技巧应用
2012/11/14 Javascript
JQuery调webservice实现邮箱验证(检测是否可用)
2013/05/21 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
javascript获取网页宽高方法汇总
2015/07/19 Javascript
Angularjs 实现一个幻灯片示例代码
2016/09/08 Javascript
使用PBFunc在Powerbuilder中支付宝当面付款功能
2016/10/01 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
2017/06/02 Javascript
vue基于mint-ui的城市选择3级联动的示例
2017/10/25 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
在Python中使用HTML模版的教程
2015/04/29 Python
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
利用Python批量生成任意尺寸的图片
2016/08/29 Python
使用python遍历指定城市的一周气温
2017/03/31 Python
python实现简单俄罗斯方块
2020/03/13 Python
CSS3+DIV实现漂亮的动画彩色标签
2016/06/16 HTML / CSS
澳大利亚购买最佳炊具品牌网站:Cookware Brands
2019/02/16 全球购物
欧舒丹俄罗斯官方网站:L’OCCITANE俄罗斯
2019/11/22 全球购物
四种会话跟踪技术
2015/05/20 面试题
大一新生军训时的自我评价分享
2013/12/05 职场文书
创新型城市实施方案
2014/03/06 职场文书
调解协议书
2014/04/16 职场文书
小学五一劳动节活动总结
2015/02/09 职场文书
浅谈Python数学建模之数据导入
2021/06/23 Python
Javascript之datagrid查询详解
2021/09/15 Javascript
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript