为了账号安全,请及时绑定邮箱和手机立即绑定

Python3机器学习实践:逻辑回归【实例:心脏病预测】

标签:
Python

1.png

逻辑回归的输出结果是判定二分类的,在实际问题中可用来解决二分类问题,当然也可利用多次的oneVSother来解决多分类问题。

现在我们有270人的身体指标数据,包括年龄、性别、心率最大值、以及是否患有心脏病等数据。现在我们要利用逻辑回归来判断一个人是否患有心脏病。也就是根据逻辑回归的输出判定一条数据是类1,还是类0。本例中患心脏病为类0。

逻辑回归最关键的就是理解Sigmoid函数,也称为Logistic函数,其表达式、图像分别为:

image

image

通过图像可以更好的理解为什么被称为Logistic函数。

不难看出,此函数的输出是0-1之间的数。针对单条数据,我们这么考虑这个问题,把这个函数的输出值看作属于类1的概率,如果这条数据是类1,我们就让这个函数的值接近1;如果这条数据是类0,我们就让1减去这个函数的值接近1。多条数据的说明见下文。

下面介绍如何评价一个分类器的好坏:在评价时,一般把两种类别称为正类和负类。其中我们比较关心的类别是正类,例如本例中我们把没有心脏病的看作正类。

一、混淆矩阵法

image

其中准确率(ar):预测类别正确的样本占所有样本的比例;

image

精确率(pr)/查准率:正类样本中预测正确的与所有预测为正类的样本数的比;

image

召回率(rr)/查全率:正类样本中预测正确的占所有实际正类的比例;

image

综合考量:F度量(Fa):精确率和召回率的加权调和平均值,其形式为:

image

当a=1时,F1是精确率和召回率的调和均值,

image

二、ROC曲线[二分类]

绘制ROC曲线,需要用到以下2个定义:

False Positive Rate(FPR,假正率):所有实际为负类的样本中,被错误地判断为正类的比例。

image

True Positive Rate(TPR,真正率):所有实际为正类的样本中,被正确地判断为正类的比例。

image

以逻辑回归为例,因为函数的输出值是一个0到1之间的数,并不是确切的0或者1,在这里面,其实是有一个阈值的。本例中这个阈值就是0.5[后文会提到]。也就是说如果函数的输出值大于等于0.5,则说明预测的为类1,否则的话,预测的为类0。因此设置不同的阈值,分类器最终的预测结果就不同。每一个阈值,都会对应一个不同的FPR和TPR,将FPR从的值小到大排列,组成X轴,对应的TPR为Y轴,构成ROC曲线。见下图:

image

image

2.png

3.png

4.png

image

实例:心脏病预测
下面给出阈值为0.5时,分类器得到的混淆矩阵:

image

通过计算可以得到:

image

源码下载



作者:AiFan
链接:https://www.jianshu.com/p/6764bd189075

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消