Python实现 logistic 回归算法


1、算法介绍

模型描述:

sigmoid函数:

原理: 优化目标:最小化 sigmoid(f(x)) 和真实标签的差别(有不同的 cost function)。运用算法(梯度上升等)更新参数w、b。


2、Python代码实现及注释

决策边界:

代码:

import numpy as np
from matplotlib import pyplot as plt# 加载数据集
def loadDataset(filename):# 数据集dataList = []# 数据样本labelsList = []fr = open(filename)for line in fr.readlines():lineArr = line.strip().split()# 添加一个值为1的特征,对应于参数bdataList.append([1.0, float(lineArr[0]), float(lineArr[1])])labelsList.append(int(lineArr[-1]))return dataList, labelsList# sigmoid函数计算
def sigmoid(z):return 1.0/(1+np.exp(-z))# 运用标准的梯度上升法更新参数
def gradAscent(dataList, labelsList):dataMat = np.mat(dataList)labelsMat = np.mat(labelsList).Tm, n = np.shape(dataMat)learningRate = 0.1maxCycles = 1000weights = np.ones((n, 1))for i in range(maxCycles):a = sigmoid(dataMat*weights)# 梯度计算的公式error = labelsMat - a# 更新参数weights = weights + learningRate*dataMat.T*error/mreturn weights# 运用随机梯度上升更新参数
def stocGradAscent(dataList, labelsList):m, n = np.shape(dataList)maxCycles = 200weights = np.ones(n)for j in range(maxCycles):for i in range(m):# 学习率递减learningRate = 4/(1.0+j+i)+0.01# randIndex = int(np.random.uniform(0, m))# 计算 sigmoid 一次只计算一个样本a = sigmoid(np.sum(dataList[i]*weights))error = labelsList[i] - aweights = weights + learningRate*error*np.array(dataList[i])return weights# 绘制数据集及决策边界
def plotLine(dataSet, labels, weights):# 绘制数据集,不同类别颜色不同plt.scatter(np.array(dataSet)[:, 1], np.array(dataSet)[:, 2], 30 * (np.array(labels)+1), 15*np.array(labels))# 令表达式=0绘制决策边界x = np.expand_dims(range(-3, 3, 1), 1)y = (-weights[0]-x*weights[1])/weights[2]plt.plot(x, y)plt.show()# 测试 logistic 回归分类器
def predict(sample, weights):# 重构样本特征向量sample = np.array([1.0, sample[0], sample[1]])prob = sigmoid(np.sum(sample*weights))if prob > 0.5:print("this is a positive")else:print('this is a negative')if __name__ == '__main__':# 加载数据集dataList, labelsList = loadDataset('testSet.txt')# 得到模型参数# weights = gradAscent(dataList, labelsList)weights = stocGradAscent(dataList, labelsList)print(weights)# 绘制决策边界plotLine(dataList, labelsList, weights)# 测试分类器sample = np.array([1, 9])predict(sample, weights)

Python实现 logistic 回归算法相关推荐

  1. circle loss代码实现_Python全栈之路-23-使用Python实现Logistic回归算法

    视频讲解地址 使用Python实现Logistic回归算法_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com 本文代码 地址​github.com Logistic ...

  2. python实现logistic_用Python实现机器学习算法—Logistic 回归算法

    在 Logistic 回归中,我们试图对给定输入特征的线性组合进行建模,来得到其二元变量的输出结果.例如,我们可以尝试使用竞选候选人花费的金钱和时间信息来预测选举的结果(胜或负).Logistic 回 ...

  3. logistic回归 如何_第七章:利用Python实现Logistic回归分类模型

    免责声明:本文是通过网络收集并结合自身学习等途径合法获取,仅作为学习交流使用,其版权归出版社或者原创作者所有,并不对涉及的版权问题负责.若原创作者或者出版社认为侵权,请联系及时联系,我将立即删除文章, ...

  4. 使用 python 实现 Logistic 回归

    使用 python 实现 Logistic 回归 原理回顾 预测函数 代价函数 参数更新 代码分析 算法的实现 算法的使用 算法的对比 全部代码 这节课我们将使用 numpy 实现 逻辑回归算法,然后 ...

  5. Logistic回归算法实战

    实战--预测病马的死亡率 前面,我简单介绍了「Logistic分类器」. Logistic回归算法 今天,我们将进行实战操练:使用Logistic分类器来预测患有疝病的马的存活率. 疝病是描述马胃肠痛 ...

  6. Logistic 回归算法原理

    Logistic 回归算法原理 Sigmoid 函数 概率决策 分布函数 函数求导 逻辑回归模型 概率预测函数 对数几率回归 条件概率分布 极大似然估计 似然函数 对数似然 对数损失 梯度上升 Log ...

  7. 机器学习中的Logistic回归算法(LR)

    Logistic回归算法(LR) 算法简介 LR名为回归,实际是一种分类算法.其针对输入样本集 x x,假设的输出结果 y=hθ(x)y=h_{\theta}(x) 的取值范围为 y=[0,1] y= ...

  8. python基于logistic回归模型的预测概率和标签信息可视化ROC曲线

    python基于logistic回归模型的预测概率和标签信息可视化ROC曲线 目录 python基于logistic回归模型的预测概率和标签信息可视化ROC曲线

  9. Logistic回归算法

    Logistic回归算法 类别 学习方法 数学知识 数据集 代码 详细内容 步骤 Logistic回归的数学表达式 Logistic回归的损失函数 优化 类别 类别:分类算法 学习方法 学习方法:有监 ...

最新文章

  1. POJ 1273 (基础最大流) Drainage Ditches
  2. 内置的常用协议实现模版
  3. hdu3790最短路径问题 (Dijkstra算法)
  4. clickhouse 同步 mysql数据
  5. MFC 常见窗口操作
  6. java run() 返回值_java线程的run()没有返回值怎么办?
  7. android dialog动画_2020年GitHub 上那些优秀Android开源库,这里是Top10!
  8. 转:Confusion Matrix(混淆矩阵) 解释最全的一个
  9. iOS开发企业版ipa分发
  10. keepalived配置文件相关简单解释
  11. android维持登录状态
  12. 网络渗透测试实验二(网络扫描与网络侦察)
  13. 通俗讲解 依概率收敛,大数定理和中心极限定理
  14. 苹果手机怎么切换输入法_苹果手机输入法的小技巧,你知道几个?最后一个你肯定不知道...
  15. Android事件分发机制在实战开发中的应用之一
  16. Python语法备忘
  17. 微机原理——汇编语言
  18. 迅为RK3568开发板实现的NVR/XVR方案
  19. [MFC] 高仿Flappy bird 桌面版
  20. 深度学习之视频入门经典+视频分类+视频行为识别+行为检测+视频事件识别+事件检测--附带源码和作者主页

热门文章

  1. OpenLayers中地图缩放级别的设置方法
  2. Lintcode214-Max of Array-Naive
  3. Oracle 创建,查询,删除 job
  4. 去除链接虚线边框css
  5. STL之nth_element__寻找第n大的元素
  6. BZOJ2212——线段树合并
  7. Web 前端技术图谱-菜鸟教程
  8. [Xcode 实际操作]四、常用控件-(5)UILabel文本标签自定义文字样式
  9. @RequestMapping,@ResponseBody,@RequestBody用法
  10. Excel找出两列相同部分