目录

第一章:逻辑回归的应用场景

第二章:逻辑回归的原理

1.输入

2.Sigmoid函数

3.损失函数

4.优化损失

采用梯度下降:

第三章 逻辑回归应用案例

1.数据集

2.具体流程

1.读取数据

2.缺失值处理

3.划分数据集

4.标准化

5.预估器流程

6.模型评估

7.结果展示

第四章 分类评估算法

1.分类的评估方法------精确率与召回率

精确率:

召回率:

F1-score

2.分类的评估方法------ROC曲线和AUC指标


第一章:逻辑回归的应用场景

  • 广告点击率
  • 是否为垃圾邮件
  • 是否患病
  • 金融诈骗
  • 虚假账号

看到上面的例子,我们可以发现其中的特点,那就是都属于两个类别之间的判断。逻辑回归就是解决二分类问题的利器。

注意:逻辑回归虽然名字中有回归二字,但是它不是回归算法,而是分类算法。

第二章:逻辑回归的原理

1.输入

这是线性回归输出的结果,我们一般可以写成矩阵形式。如下:

权重和偏置分别用矩阵表示之后,将上面的式子可以写成下面的:

 重点:逻辑回归的输入就是一个线性回归的结果。

2.Sigmoid函数

图像为:

观察该图像,自变量取值范围是(-∞,+∞),因变量取值范围为(0,1),意思是无论自变量取值多少,都可以通过sigmoid函数映射到(0,1)之间。

总结:sigmoid函数,会把线性回归的结果映射到【0,1】之间,假设0.5为阈值,默认会把小于0.5的为0,大于0.5的为1,这样就可以分类了

假设:预测函数为:

其中

以上两式的意思是,先把线性回归的结果用矩阵表示,在将表示的结果放到sigmoid函数当中。

分类任务:

理解:以丢硬币的概率举例,假如正面的概率是0.7,那么反面的概率是1-0.7=0.3

将上面两个式子进行整合,得到:

这个式子的特点,当y=0的时候,整体会等于右边这个式子,当y=1的时候,整体会等于左边这个式子。

3.损失函数

为求出好的逻辑回归,引出损失函数 :

①损失函数是体现“预测值”和“真实值”,相似程度的函数

②损失函数越小,模型越好

逻辑回归的损失,称之为对数似然损失,公式如下:

这个式子也不陌生,将上面整合的式子,取对数,原先是相乘,取对数之后会相加,指数也可以移到前面。

假定样本与样本之间相互独立,那么整个样本集生成的概率即为所有样本生成概率的乘积,再将公式对数化,便可得到如下公式:

 举例:求损失

其中,y代表真实结果,h(x)或者1-h(x)表示的是逻辑回归结果(也是预测值),将值带入即可得到。

4.优化损失

采用梯度下降:

理解:α为学习速率,需要手动指定,α旁边的整体表示方向

沿着这个函数下降的方向找,最后就能找到山谷的最低点,然后更新W值

使用:面对训练数据规模十分庞大的任务 ,能够找到较好的结果

图像表示如下:

就是不断的缩小自身的值,最后找到最低点。

第三章 逻辑回归应用案例

1.数据集

原始数据集下载

网址:Index of /ml/machine-learning-databases/breast-cancer-wisconsinhttps://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/

打开之后,下载红色标注的两个。

其中data里面是数据,共699条样本,共11列数据,第一列用语检 索的id,后9列分别是与肿瘤相关的医学 特征,最后一列表示肿瘤类型的数值。包含16个缺失值,用”?”标出。

names里面是对data文件的描述,主要是对data里面每列的说明,最后一列是类别。

2.具体流程

1.读取数据

需要注意的是数据和列明分开了,因此在进行读取的时候,要一块读取。

import pandas as pd
import numpy as np
# 1.读取数据
path = "breast-cancer-wisconsin.data"
column_name = ['Sample code number', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape','Marginal Adhesion', 'Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin','Normal Nucleoli', 'Mitoses', 'Class']data = pd.read_csv(path, names=column_name)
# print(data)

2.缺失值处理

# 2、缺失值处理
# 1)替换-》np.nan
data = data.replace(to_replace="?", value=np.nan)
# 2)删除缺失样本
data.dropna(inplace=True)

3.划分数据集

# 3、划分数据集
from sklearn.model_selection import train_test_split
# 筛选特征值和目标值
x = data.iloc[:, 1:-1]
y = data["Class"]
x_train, x_test, y_train, y_test = train_test_split(x, y)

4.标准化

把原始数据转化到均值为0,标准差为1的范围内

# 4、标准化
from sklearn.preprocessing import StandardScaler
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)

5.预估器流程

from sklearn.linear_model import LogisticRegression
# 5、预估器流程
estimator = LogisticRegression()
estimator.fit(x_train, y_train)
# 逻辑回归的模型参数:回归系数和偏置
# estimator.coef_
# estimator.intercept_

6.模型评估

# 6、模型评估
# 方法1:直接比对真实值和预测值
y_predict = estimator.predict(x_test)
print("y_predict:\n", y_predict)
print("直接比对真实值和预测值:\n", y_test == y_predict)
# 方法2:计算准确率
score = estimator.score(x_test, y_test)
print("准确率为:\n", score)

7.结果展示

代码还未结束,后面还有评估代码

第四章 分类评估算法

1.分类的评估方法------精确率与召回率

我们往往并不关注准确率,而是关注癌症患者中癌症患者有没有检测出来,于是就有了精确率与召回率。

在分类任务下,预测结果(Predicted Condition)与正确标记(True Condition)之间存在四种不同的组合,构成混淆矩阵。

精确率:

预测结果为正例样本中真实结果为正例的比例,在混淆矩阵中展示情况为:

召回率:

真实结果为正例的样本中预测结果为正例的比例,在混淆矩阵中展示情况为:

总结:

精确率是预测结果的正例中有多少是真正预测正确的

召回率是真实结果的正例有多少被预测对了

以上就是精确率和召回率,现在介绍F1-score

F1-score

反映了模型的稳健型,F1值大的话,精确率和召回率也大

现在用代码实现精确率、召回率和F1-score

# 查看精确率、召回率、F1-score
from sklearn.metrics import classification_report
report = classification_report(y_test, y_predict, labels=[2, 4], target_names=["良性", "恶性"])
print(report)

结果为:

在引入ROC曲线和AUC指标之前,举个样本不均衡的例子

思考?

假设这样一个情况,如果99个样本癌症,1个样本非癌症,不管怎样我全都预测正例(默认癌症为正例)

将这写信息写入混淆矩阵中,如下:

分别计算:

准确率:99%

精确率:99/(99+1)=99%

召回率:99/(99+0)=100%

F1-score:2*99%*100%/99%+100%=99.497487%

可以看出,这是一个不负责的模型,根本原因在于样本不均衡,正例太多,反例太少。引入ROC曲线和AUC指标。

2.分类的评估方法------ROC曲线和AUC指标

在引入ROC曲线和AUC指标之前,还要了解TPR与FPR。

TPR = TP / (TP + FN)

所有真实类别为1的样本中,预测类别为1的比例

FPR = FP / (FP + TN)

所有真实类别为0的样本中,预测类别为1的比例

分类的评估方法------ROC曲线和AUC指标

蓝色的线就是ROC曲线,AUC指标是ROC曲线与纵轴和横轴的面积。

现在介绍这张图:

ROC曲线的横轴就是FPRate,纵轴就是TPRate,当二者相等时,表示的意义则是:对于不论真实类别是1还是0的样本,分类器预测为1的概率是相等的,此时AUC为0.5(即随机猜测)

AUC的最小值为0.5,最大值为1,取值越高越好

AUC=1,完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。

0.5<AUC<1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值

结论:

最终AUC的范围在[0.5, 1]之间,并且越接近1越好。

通过代码实现,计算ROC曲线面积,即AUC指标:

# y_true:每个样本的真实类别,必须为0(反例),1(正例)标记
# 将y_test 转换成 0 1
y_true = np.where(y_test > 3, 1, 0)
from sklearn.metrics import roc_auc_score
print("AUC指标:",roc_auc_score(y_true, y_predict))

其结果展示:

总结:

AUC只能用来评价二分类

AUC非常适合评价样本不平衡中的分类器性能

现在知道了ROC曲线和AUC指标,再回到前面提到的样本不均衡的例子,即思考那个地方。

TPR:99/99+0=100%

FPR:1/1+0=100%

TPR=FPR

AUC=0.5

对于这种样本不均衡的情况下,AUC指标是0.5,表明这个模型很差。

注:

说明,以上内容来自于黑马程序员机器学习视频的学习。

以上内容也是机器学习课程老师留的作业,原先是PPT形式,觉得整体上比较完整,因此将此发到博客上,让以后的自己和他人学习。2022.6.16

逻辑回归(Logistic Regression)原理及其应用相关推荐

  1. 逻辑回归(Logistic Regression)原理及Python实现

    前面有讲过线性回归,但是很多非线性问题不能用简单的线性回归来分类.这时需要用到逻辑回归,逻辑回归是一种非线性的回归.说到逻辑回归一定要说到概率问题,概率(probability)就是对一件事发生的可能 ...

  2. 逻辑回归(Logistic Regression)原理及损失函数、极大似然估计

    一.什么是逻辑回归 虽然名字是"回归",但解决的是"分类"问题. 模型学习的是E[y∣x;θ]E[y|x;\theta]E[y∣x;θ],即给定自变量和超参数后 ...

  3. 逻辑回归(logistic regression)原理理解+matlab实现

    使用梯度下降法迭代: function theta =logisticReg() % 梯度下降法寻找最合适的theta,使得代价函数J最小 options=optimset('GradObj','on ...

  4. 逻辑回归(logistic regression)的本质——极大似然估计

    文章目录 1 前言 2 什么是逻辑回归 3 逻辑回归的代价函数 4 利用梯度下降法求参数 5 结束语 6 参考文献 1 前言 逻辑回归是分类当中极为常用的手段,因此,掌握其内在原理是非常必要的.我会争 ...

  5. 逻辑回归(Logistic Regression)简介及C++实现

    逻辑回归(Logistic Regression):该模型用于分类而非回归,可以使用logistic sigmoid函数( 可参考:http://blog.csdn.net/fengbingchun/ ...

  6. OpenCV3.3中逻辑回归(Logistic Regression)使用举例

    OpenCV3.3中给出了逻辑回归(logistic regression)的实现,即cv::ml::LogisticRegression类,类的声明在include/opencv2/ml.hpp文件 ...

  7. Coursera公开课笔记: 斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)”

    Coursera公开课笔记: 斯坦福大学机器学习第六课"逻辑回归(Logistic Regression)" 斯坦福大学机器学习第六课"逻辑回归"学习笔记,本次 ...

  8. OpenCV逻辑回归Logistic Regression的实例(附完整代码)

    OpenCV逻辑回归Logistic Regression的实例 OpenCV逻辑回归Logistic Regression的实例 OpenCV逻辑回归Logistic Regression的实例 # ...

  9. 斯坦福大学机器学习第四课“逻辑回归(Logistic Regression)”

    斯坦福大学机器学习第四课"逻辑回归(Logistic Regression)" 本次课程主要包括7部分: 1) Classification(分类) 2) Hypothesis R ...

  10. 逻辑回归(Logistic Regression, LR)又称为逻辑回归分析,是分类和预测算法中的一种。通过历史数据的表现对未来结果发生的概率进行预测。例如,我们可以将购买的概率设置为因变量,将用户的

    逻辑回归(Logistic Regression, LR)又称为逻辑回归分析,是分类和预测算法中的一种.通过历史数据的表现对未来结果发生的概率进行预测.例如,我们可以将购买的概率设置为因变量,将用户的 ...

最新文章

  1. 周长相等的正方形面积一定相等_必考单元:三年级下册面积计算公式+知识点+测试卷(附答案),重点内容,收藏练习!...
  2. ECMAScript 6 Features 中文版
  3. CentOS 6.7 如何启用中文输入法
  4. virsh KVM管理工具
  5. 关于SELECT 逻辑的执行顺序问题
  6. SIGGRAPH 2020 | 基于样例的虚拟摄影和相机控制
  7. SuperMap.IS.AjaxScript之常用功能实现研究及使用
  8. VK Cup 2016 - Round 1 (Div. 2 Edition) A. Bear and Reverse Radewoosh 水题
  9. 长时间工作意味着什么
  10. ttest求pvalue_TTEST 在EXCEL计算出的结果是t还是p值,用哪一个公式在excel中计算出t值和p值是多少...
  11. Python绘制计算机CPU占有率变化的折线图
  12. 怎么制作gif动图,gif动态图怎么制作
  13. “爆炸图!“ArcGIS中制作一张好看的爆炸分析图(附练习数据)
  14. php域名转向,php强制用户转向www域名的方法_PHP
  15. 朴实无华!注意力机制神经网络解析
  16. 大数据扫黄,是怎样发现你的?
  17. 九龙证券|光模块概念股封单资金超3亿元,传媒板块涨停潮来袭
  18. Unity:计算两个物体(没有父子关系)的相对坐标
  19. [转载]只需要读内存实现的Dota全图
  20. 文件内容中显示(SOH、STX、ETX)

热门文章

  1. 如何加入知识星球参与开源优测交流圈子
  2. 不小心关闭浏览器,恢复关闭前的全部窗口
  3. STK地心惯性系(ICRF)与卫星上传感器体坐标系转换
  4. 如何设定Allegro dra建库环境下的快捷键
  5. 好用的python_好用的 python 工具集合
  6. jq循环添加html绑定动态数据及事件
  7. 基于华为设备的某大型企业网络规划与实施方案
  8. ubuntu 添加用户到用户组
  9. flex伸缩布局之九宫格
  10. 【微服务】服务拆分和远程调用