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中使用%与.format格式化文本方法解析
Dec 27 Python
Python反转序列的方法实例分析
Mar 21 Python
Python使用sqlalchemy模块连接数据库操作示例
Mar 13 Python
详解用python写一个抽奖程序
May 10 Python
python的几种矩阵相乘的公式详解
Jul 10 Python
python实现图片中文字分割效果
Jul 22 Python
Python基本语法之运算符功能与用法详解
Oct 22 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
Oct 24 Python
10个Python面试常问的问题(小结)
Nov 20 Python
Python多线程多进程实例对比解析
Mar 12 Python
Jupyter Notebook输出矢量图实例
Apr 14 Python
如何在django中实现分页功能
Apr 22 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实现给图片加灰色半透明效果的方法
2014/10/20 PHP
php开发中的页面跳转方法总结
2015/04/26 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
yii2 url重写并隐藏index.php方法
2018/12/10 PHP
Laravel创建数据库表结构的例子
2019/10/09 PHP
JavaScript RegExp方法获取地址栏参数(面向对象)
2009/03/10 Javascript
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
javascript与webservice的通信实现代码
2010/12/25 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
2016/06/03 Javascript
三种带箭头提示框总结实例
2016/06/14 Javascript
详解handlebars+require基本使用方法
2016/12/21 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
详解JS函数防抖
2020/06/05 Javascript
Vue之封装公用变量以及实现方式
2020/07/31 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
2020/10/30 Javascript
python轻松查到删除自己的微信好友
2016/01/10 Python
全面了解Python环境配置及项目建立
2016/06/30 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
Python实现常见的回文字符串算法
2018/11/14 Python
python2.7实现邮件发送功能
2018/12/12 Python
python实现指定ip端口扫描方式
2019/12/17 Python
pytorch中torch.max和Tensor.view函数用法详解
2020/01/03 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
2020/11/25 Python
html5画布旋转效果示例
2014/01/27 HTML / CSS
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
巴西服装和鞋子购物网站:Marisa
2018/10/25 全球购物
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
什么是类的返射机制
2016/02/06 面试题
.NET面试题:什么是值类型和引用类型
2016/01/12 面试题
大学生励志演讲稿
2014/04/25 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
大学生党员暑假实践(活动总结)
2019/08/21 职场文书
导游词之天津盘山
2019/11/01 职场文书
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL