机器学习基础之《回归与聚类算法(5)—分类的评估方法》

问题:上一篇的案例,真的患癌症的,能被检查出来的概率?

一、精确率和召回率

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

预测结果:是预测值
正确标记:是真实值
用来求精确率和召回率的

TP = True Possitive
FN = False Negative
FP = False Possitive
TN = True Negative

2、精确率(Precision)与召回率(Recall)
精确率:预测结果为正例样本中真实为正例的比例

即是,TP / (TP + FP)

召回率:真实为正例的样本中预测结果为正例的比例

即是,TP / (TP + FN)

3、真的患癌症的,能被检查出来的概率 - 召回率

二、F1-score

1、反映了模型的稳健性

等价于:2*精确率*召回率 / (精确率 + 召回率)
Precision是预测的好瓜中有多少真正的好瓜,Recall是所有真正的好瓜被预测对了多少

三、分类评估报告API

1、sklearn.metrics.classification_report(y_true, y_pred, labels=[], target_names=None)
y_true:真实目标值
y_pred:估计器预测目标值
labels:指定类别对应的数字
我们在传y_true、y_pred传的是数字,将数字表示出来
target_names:目标类别名称
分类报告显示
return:每个类别精确率与召回率

2、在上一篇代码后添加

# 查看精确率、召回率、F1-score
from sklearn.metrics import classification_report

report = classification_report(y_test, y_predict, labels=[2, 4], target_names=["良性", "恶性"])

print(report)

运行结果:

support是样本数量

四、样本不均衡的情况

1、假设这样一个情况,总共有100个人,如果99个样本癌症,1个样本非癌症,不管怎样我全都预测正例(默认癌症为正例),准确率就为99%但是这样效果并不好,这就是样本不均衡下的评估问题
准确率:99%
召回率:99 / 99 = 100%
精确率:99 / 100 = 99%
F1-score:2*99%*100% / 199% = 99.497%

就是瞎猜,全都蒙成换了癌症,不负责任的模型
这种情况我们是要避免的,我们目前学习到的这些分类指标都不能反映出它的问题所在
样本不均衡,正样本太多,反例太少

五、ROC曲线与AUC指标

1、ROC曲线
蓝色的线是ROC曲线

2、AUC指标
ROC曲线和x轴、y轴包成的区域的面积

衡量好坏,我们看的是AUC指标,AUC越接近1越好,越接近0.5越不好

3、ROC曲线是怎么来的
TPR = TP / (TP + FN) - 就是召回率
所有真实类别为1的样本中,预测类别为1的比例
FPR = FP / (FP + FN)
所有真实类别为0的样本中,预测类别为1的比例

TPR是正例的召回率,FPR是反例的召回率
ROC曲线就是由TPR和FPR这两个指标构成的

当TPR=FPR:
正例的召回率、反例的召回率都为1,说明是在瞎猜,就是红色的斜线,面积是 1*1/2 = 0.5

当TPR>FPR:
TPR接近于1,FPR接近于0,就是接近于Perfect Classification,面积是 1*1=1

当TPR<FPR:
就是一条反曲线,做反向预测用

4、AUC的意义
(1)AUC的概率意义是随机取一对正负样本,正样本得分大于负样本的概率
(2)AUC的最小值为0.5,最大值为1,取值越高越好
(3)AUC=1,完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器
(4)0.5<AUC<1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值
(5)最终AUC的范围在[0.5, 1]之间,并且越接近1越好

六、AUC的计算API

1、sklearn.metrics.roc_auc_score(y_true, y_score)
计算ROC曲线面积,即AUC值
y_true:每个样本的真实类别,必须传0(反例),1(正例)
y_score:可以是预测得分,可以是正例的估计概率、置信值或者分类器方法的返回值

2、代码

y_test.head()

# y_true:每个样本的真实类别,必须传0(反例),1(正例)
# 将y_test转换成0,1
y_true = np.where(y_test > 3, 1, 0)

y_true

from sklearn.metrics import roc_auc_score

roc_auc_score(y_true, y_predict)

运行结果:

七、小结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/122933.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Python自学笔记】python os.getcwd文件目录找不对

写小组项目的时候需要按照路径读入数据表&#xff0c;数据库和图片列表显示到html&#xff0c;按ChatGPT的答案写了python os.getcwd()&#xff0c;结果迁移到同组同学的电脑上总是报错。 经过一番查询&#xff0c;在CSDN上发现一个完美解决问题的好帖&#xff0c;特此存下链接…

订水商城实战教程09-跑马灯

目录 1 跑马灯效果2 创建数据源3 创建变量4 搭建组件5 数据绑定6 录入测试数据总结 上一篇我们介绍了轮播图如何开发&#xff0c;本节我们介绍一下跑马灯的效果开发。 1 跑马灯效果 通常小程序会增加一点动画的效果来让页面显得不那么死板&#xff0c;我们这里增加了一个跑马灯…

ChatGPT生产力|中科院学术ChatGPT优化配置

资源链接&#xff1a;GitHub - binary-husky/gpt_academic b站配置讲解链接&#xff1a;chatgpt-academic 新手运行官方精简指南&#xff08;科研chatgpt拓展&#xff09; 某知配置图文讲解&#xff1a;图文详解&#xff1a;在windows中部署ChatGPT学术版 - 知乎 (zhihu.com) 一…

统计一个只包含大写字母的字符串中顺序对的数量.其中顺序对的定义为前面的字符小后面的字符大.例如在“ABC“中的顺序对为3,因为有AB,AC,BC

哈希法&#xff1a;扫描字符串&#xff0c;将出现的字符次数加1&#xff0c;统计比当前字符字典序小的字母出现的次数&#xff0c;即为顺序串的个数。 int CounSq(const char* arr)//时间复杂度O&#xff08;n&#xff09; {int sig[26] { 0 };int index 0;int sum 0;for (…

微信小程序:js实现不改变原数组的情况下增加一条对象到新数组中

效果 核心 old_array.slice(0) 表示对 old_array 这个数组进行切片操作&#xff0c;从索引 0 开始&#xff08;包括索引 0&#xff09;&#xff0c;直到数组的末尾&#xff0c;old_array.slice(0) 中的 0 表示开始切片的索引位置&#xff0c;而由于没有传入第二个参数&#xff…

蓝桥杯每日一题2023.11.6

取位数 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 由题意我们知道len中为现阶段长度&#xff0c;如果其与k相等也就是找到了正确的位数&#xff0c;否则就调用递归来进行搜索&#xff0c;每次搜索一位数。 #include <stdio.h> // 求x用10进制表示时的数位长度 int …

【MATLAB源码-第72期】基于matlab的OFDM-IM索引调制系统在高斯,瑞利,莱斯信道误码率对比,对比传统OFDM系统。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 OFDM-IM索引调制技术是一种新型的无线通信技术&#xff0c;它将正交频分复用&#xff08;OFDM&#xff09;和索引调制&#xff08;IM&#xff09;相结合&#xff0c;以提高频谱效率和系统容量。OFDM-IM索引调制技术的基本思想…

Vscode禁止插件自动更新

由于电脑的vscode版本不是很新。2022.10月份的版本1.7.2&#xff0c;电脑vscode的python插件装的也是2022年4月份的某个版本&#xff0c;但插件经常自动更新&#xff0c;导致python代码无法Debug,解决办法&#xff1a; 点设置&#xff0c;搜autoUpdate, 把红色框选成无

12、填写NGINX配置部署前端;运行jar部署后端

后端可以部署的方式&#xff0c;首先直接运行jar是肯定可以的。此外&#xff0c;可以单独开docker容器运行在容器中。 但是这里运行在容器中必要性&#xff0c;其实并不大。 当前我们直接运行jar来运行后端。后面推出集成docker。 直接运行jar包的方式&#xff0c;首先需要打…

Vue 3 相对于 Vue2,模板和组件的一些变化

目录 1&#xff0c;模板的变化1&#xff0c;v-modelvue2vue3 2&#xff0c;v-if 和 v-for3&#xff0c;keyv-forv-if 4&#xff0c;Fragment 2&#xff0c;组件的变化1&#xff0c;Teleport2&#xff0c;异步组件 1&#xff0c;模板的变化 1&#xff0c;v-model vue2 对组件…

新版HI3559AV100开发注意事项

新版HI3559AV100开发注意事项 一、在Hi3559A上使用openCV VideoCapture开启.mp4影像档, isOpened一直得到false 在Hi3559A上已经cross compile ffmepg 4.1openCV 3.4.4 但使用openCV VideoCapture开启.mp4影像档, isOpened一直得到false 请问要如何知道是什么原因无法开启影像…

java测试private

java测试private变量、方法 📕反射的基本作用、关键? 反射是在运行时获取类的字节码文件对象,然后可以解析类中的全部成分反射的核心思想和关键就是:得到编译以后的class文件对象可以破坏封装性(很突出)也可以破坏泛型的约束性(很突出)更重要的用途是适合:做java高级…

运营商大数据精准获客:我们提供精准客源渠道的最大资源体?

运营商大数据精准营销 谈起精准获客&#xff0c;竞争对手永远是为我们提供精准客源渠道的最大资源体&#xff01; 最新的获客方式&#xff0c;就是从竞争对手的手中把他们的精准客户资源变为自己的。 今年最火的运营商大数据精准营销是拒绝传统营销方式的烧钱推广&#xff0…

VSCode使用插件Github Copilot进行AI编程

演示示例 函数封装 根据上下文 根据注释 详情请看GitHub Copilot 安装插件 在VS Code中安装插件 GitHub Copilot 登录账号 点击VS code左下角账户图标&#xff0c;点击【Sign in】&#xff0c;会自动在浏览器打开Github登录页&#xff0c;登录具有 Github Copilot 服务的…

国产化精密划片机已得到国内更多厂家青睐

国产化精密划片机在近年来得到了国内许多厂家的青睐&#xff0c;这是因为精密划片机在工业生产中有着重要作用。这种设备主要用于高精密切割加工&#xff0c;适用于多种材料&#xff0c;包括硅、石英、氧化铝、氧化铁等。 以精密晶圆划片机为例&#xff0c;这种设备采用了自主研…

软件测试|iOS 自动化测试——技术方案、环境配置

移动端的自动化测试&#xff0c;最常见的是 Android 自动化测试&#xff0c;我个人觉得 Android 的测试优先级会更高&#xff0c;也更开放&#xff0c;更容易测试&#xff1b;而 iOS 相较于 Android 要安全稳定的多&#xff0c;但也是一个必须测试的方向&#xff0c;这个系列文…

OpenCV 图像复制和图像区域读写

图像复制 共享数据, 使用 new Mat(srcMat, ...) 和 newMatsrcMat 生成新的Mat都和原Mat共享数据, 也就是说如果修改某一Mat,其他Mat也会随之改变复制全新的Mat, 使用CopyTo() 和 Clone() 方法将生成一个全新的Mat, 新Mat和原Mat不共享数据. 图像区域和点的读写 区域读取: 通过s…

【node+JS】前端使用nodemailer发送邮件

前言邮箱配置完整代码 前言 最近需要实现客户提交表单后&#xff0c;把表单的内容作为邮件发送到对应的邮箱&#xff0c;不通过后端服务&#xff0c;前端直接进行发送。嘶——&#xff0c;说干就干&#xff01; 一通搜索下来&#xff0c;get到方法有很多种&#xff0c;但是。。…

原文远知行COO张力加盟逐际动力 自动驾驶进入视觉时代?

11月7日&#xff0c;通用足式机器人公司逐际动力LimX Dynamics官宣了两位核心成员的加入。原文远知行COO张力出任逐际动力联合创始人兼COO&#xff0c;香港大学长聘副教授潘佳博士为逐际动力首席科学家。 根据介绍&#xff0c;两位核心成员的加入&#xff0c;证明一家以技术驱…