当前位置:网站首页>【笔记】混淆矩阵和ROC曲线
【笔记】混淆矩阵和ROC曲线
2022-08-03 03:05:00 【Sprite.Nym】
一、混淆矩阵
预测为真 | 预测为假 | |
---|---|---|
真实为真 | TP (True Positive) | FN (False Negative) |
真实为假 | FP (False Positive) | TN (True Negative) |
案例:
真实值:0 1 1 0 1 1 0 0 1 0 1 0 1 0 0
预测值:1 1 1 1 1 0 0 0 0 0 1 1 1 0 1
二、重要指标
(1)精确率(precision、positive predictive value、ppv):
TP / (TP + FP)
即鉴定为阳性的所有数据中,确实为阳性的数据所占比。衡量算法的精确度。
(2)召回率(recall、sensitivity(敏感度)、True Positive Rate(真阳性率/TPR)):
TP / (TP + FN)
即所有确实为阳性的数据中被鉴定出来的比率。
(3)特异度(specificity、True Negative Rate(真阴性率/TNR)):
TN / (TN + FP)
即所有确实为阴性的数据中被鉴定出来的比率。
(4)假阳性率(False Positive Rate(FPR)):
FP / (FP + TN)
即所有确实为阴性的数据中被鉴定成阳性的比率。
(5)F1值:精确率和召回率的调和平均数。F1值越接近1,模型输出越好。
2 1 p r e c i s i o n + 1 r e c a l l \Large \frac 2 {\frac 1 {precision} + \frac 1 {recall}} precision1+recall12
三、ROC曲线
在已经通过算法计算得到预测概率的前提下,每确定一个概率阈值,都可以产生一组新的预测值,每组新的预测值都可以和测试集中的真实值计算出一个新的混淆矩阵和对应的TPR、FPR。改变阈值,得到很多对不同的TPR、FPR后,以FPR为X坐标,TPR为Y坐标绘制成折线图,即得到ROC曲线。ROC曲线和X轴与X=1这两条线围成的图形面积叫AUC值,Area Under Curve。
在sklearn中绘制ROC曲线(数据事先准备):
# 导入metrics
from sklearn import metrics
# 定义一个绘图函数
def show_roc(y_test, scores, pos_label):
# 得到FPR、TPR和阈值
fpr, tpr, threshold = metrics.roc_curve(y_test, scores, pos_label=pos_label)
plt.plot(fpr, tpr, color='green')
# 绘制对角线
plt.plot(np.linspace(0,1,10),np.linspace(0,1,10),color='red',ls='--')
# 加X轴Y轴标签
plt.xlabel('FPR')
plt.ylabel('TPR')
# 加名字
plt.title('ROC space')
plt.show()
# 调用函数
show_roc(y_test, scores, 1)
边栏推荐
- sql问题,如何能做到先声明表的名称,例如product202201,表示2022年一月份的货物表,再在声明过的表中查找,下面的代码运行时有错误显示找不到表table_name,请问改如何进行修改
- 思维+启发式合并
- SqlSession [[email protected]]
- 金仓数据库 MySQL 至 KingbaseES 迁移最佳实践(3. MySQL 数据库移植实战)
- nVisual信息基础设施可视化管理
- Base64编码原理
- How does Excel compare if two columns of strings are the same?
- 大佬们,我有点不明白:为什么oracle-cdc的文档写connector可以做到exactly-o
- ClickHouse常用函数速查大全
- leetcode:139. 单词拆分
猜你喜欢
C语言——-动态内存开辟与管理(malloc,free,calloc,realloc)+柔性数组
Best Practices for Migration from Jincang Database from MySQL to KingbaseES (3. MySQL Database Migration Practice)
IPv4编址;A类、B类、C类、D类、E类IP地址(IP地址;网络地址和主机地址;子网掩码;网关;广播地址;)
一次偶然的钓鱼文件分析
Task Scheduler 计划定时任务,修改时报错: One or more of the specified arguments are not valid
leetcode:162. 寻找峰值
用 SQL 做数据分析的十大常用功能,附面试原题解答!!
Sentinel vs Hystrix 限流对比,到底怎么选?
【leetcode热题Hot100】——任务调度器
【每日一题】622. 设计循环队列
随机推荐
【每日一题】622. 设计循环队列
els 消除行
ROS计算图——rqt_graph
QT之鼠标和键盘事件重写
智能健身动作识别:PP-TinyPose打造AI虚拟健身教练!
radio button、qss文件环境配置
Domino服务器SSL证书安装指南
基于 Cyclone IV 在 Quartus 中配置 IP 核中的 PLL、RAM 与 FIFO 的详细步骤及仿真验证
nVisual信息基础设施可视化管理
C语言实验十二 指针(二)
有大佬知道 使用flinksql是 同步的日期字段为null的话怎么处理吗
Auto.js Pro 计算脚本运行时间
网易数帆陈谔:云原生“牵手”低代码,加速企业数字化转型
【obs】启动推流失败 : Output.StartStreamFailed 调用流程
MySQL-多表查询
Compose the displacement of the view
信号和槽的绑定
用 SQL 做数据分析的十大常用功能,附面试原题解答!!
ClickHouse删除表
在VScode里调试ROS程序