多分类f1分数_机器学习之分类模型评估总结
一、概述
在机器学习模型搭建好之后,需要对模型进行评估,针对不同的算法模型有不同的评估方法,比如:分类算法、回归算法、聚类算法等,本文主要是针对分类算法的模型评估方法进行总结整理,便于自己对评估方法的进一步理解和随时查阅。
二、详细说明
在介绍分类评估方法之前,首先介绍一个比较重要的概念:混淆矩阵,后续的评估方法都是在此基础之上定义的,对于分类模型而言(这里仅以最简单的二分类为例,假设只有0和1两类),其结果主要有以下四种:
- 实际为正、结果为正,预测正确
- 实际为正、结果为负,预测错误
- 实际为负、结果为正,预测错误
- 实际为负、结果为负,预测正确
混淆矩阵的形式,具体如下图所示:
其中:T、F表示预测结果是否正确、而后面跟的P、N主要是对应预测的结果,这下记住上面的图了吧!
介绍完混淆矩阵,接下来我们介绍常用的评价标准,主要包括:准确率、精确率、召回率、F1值、ROC曲线、AUC、P-R、KS曲线等
准确率
准确率很好理解,就是预测正确的占比,其公式为:
精确率
也称为查准率,在真实值为正的样本中,预测正确的样本占比,其计算公式表示为:
召回率
也称为查全率,在预测值为正的样本中,预测为正的样本占比,其计算公式表示为:
F1-Score
F1分数(F1 Score),是统计学中用来衡量二分类模型精确度的一种指标。它同时兼顾了分类模型的准确率和召回率。F1分数可以看作是模型准确率和召回率的一种加权平均,它的最大值是1,最小值是0,其公式为:
ROC曲线
对于ROC曲线,其横、纵坐标分别为:伪正率(FPR)、真正率(TPR)。其中:
真正率为实际为正的样本中,被判断为正的比例,公式如下:
可以看到真正率的计算公式和召回率的计算公式是一样的
假正率为实际为负,被错误判断为正的比例,公式如下:
ROC曲线的绘制主要我们根据多个阈值来计算出多组FPR和TPR(比如在逻辑回归中我们可以调整阈值如0.25、0.5、0.75等,这样我们就可以绘制出多组值绘制出ROC曲线,如下图所示:
ROC的计算方法同时考虑了学习器对于正例和负例的分类能力,在样本不平衡的情况下,依然能够对分类器做出合理的评价。ROC对样本类别是否均衡并不敏感,这也是不均衡样本通常用ROC评价学习器性能的一个原因,其中ROC曲线越往上靠近模型性能越好(为啥越考上越好,纵坐标为真正率越大越好),
AUC
AUC是一个模型评价指标,只能用于二分类模型的评价,对于AUC我们记住,其就是ROC曲线下面的面积,AUC=1.0时表示模型最好,随机猜测的为0.5,其值越高,模型性能越好。
PR曲线
PR曲线是以召回率为横轴、以精确率为纵轴绘制的曲线,如下:
其中:曲线下的面积越大,或者说曲线更接近右上角(precision=1, recall=1),那么模型就越理想,越好。
KS曲线
K-S曲线的数据来源以及本质和ROC曲线是一致的,只是ROC曲线是把真正率(
K-S曲线是把真正率(
KS值:
从 K-S 曲线就能衍生出
三、Sklearn实战
Python的第三方库sklearn为我们提供了上述模型评估计算的接口,具体演示如下代码:
from sklearn import metrics
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
# Matplotlib中设置字体-黑体,解决Matplotlib中文乱码问题
plt.rcParams['axes.unicode_minus'] = False
# 解决Matplotlib坐标轴负号'-'显示为方块的问题y_true=[1,1,0,1,1]
y_pred=[0,0,0,1,0]# 混淆矩阵
C = metrics.confusion_matrix(y_true, y_pred)
print("混淆矩阵为:n",C)
# 计算准确率(accuracy)
accuracy = metrics.accuracy_score(y_true,y_pred)
print("准确度为:n",accuracy)
# 计算精确率(precision)
precision = metrics.precision_score(y_true,y_pred)
print("精确率为:n",precision)
# 计算召回率(recall)
recall = metrics.recall_score(y_true,y_pred)
print("召回率为:n",recall)
# 计算F1-score(F1-score)
F1_score = metrics.f1_score(y_true,y_pred)
print("精确率为:n",F1_score)# 绘制PR曲线
y_pred = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1]
y_true = [0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0]precision,recall,thresholds = metrics.precision_recall_curve(y_true, y_pred)
plt.plot(precision, recall)
plt.title("PR曲线")
plt.xlabel("recall")
plt.ylabel("precision")
plt.show()# 绘制ROC曲线
y_pred = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1]
y_true = [0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0]FPR,TPR,thresholds = metrics.roc_curve(y_true,y_pred)
plt.plot(FPR, TPR)
plt.title("ROC曲线")
plt.xlabel("recall")
plt.ylabel("precision")
plt.plot([0,1],[0,1],'r--')
plt.show()# 计算AUC值
y_true = [0, 0, 1, 1, 0]
y_scores = [0.1, 0.4, 0.35, 0.8, 0.2]
print('AUC socre:',metrics.roc_auc_score(y_true, y_scores))# 计算ks值
y_pred = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1]
y_true = [0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0]
FPR,TPR,thresholds = metrics.roc_curve(y_true,y_pred)# 绘制KS曲线
plt.plot(thresholds, FPR)
plt.plot(thresholds, TPR)
plt.show()KS=abs(FPR-TPR).max()
print('KS值:',KS)
四、总结
本文主要总结了分类模型的常用评估方法,需要了解各个名词的含义及对应的计算公式,同时需要了解各个评估方法适合的应用场景,在第三部分介绍了sklearn库中对于评估方法的实现,只需要记住metrics,各个计算函数与其名字对应,在jupyter中可以使用tab键和shift+table键的使用,你会发现更多.......
多分类f1分数_机器学习之分类模型评估总结相关推荐
- 多分类f1分数_所以多分类情况下sklearn的f1值到底是怎么计算的
已经很久没有更新新的文章啦,最近在弄GCN,很多东西的理解都还没有很透彻,所以也不太好发,不过就在今天"南归"的时候刷知乎,刷到了这么一个朋友( @苏小胖与喵 )的疑问: 这... ...
- 多分类f1分数_如何计算多标签分类中的F1测度?
我正在研究句子类别检测问题.其中每个句子可以属于多个类别,例如:"It has great sushi and even better service." True Label: ...
- 多分类f1分数_多分类的评价指标PRF(Macro-F1/MicroF1/weighted)详解
也许是由于上学的时候一直搞序列标注任务,多分类任务又可以简化为简单的二分类任务,所以一直认为PRF值很简单,没啥好看的.然鹅,细看下来竟有点晦涩难懂,马篇博留个念咯~ 前言 PRF值分别表示准确率(P ...
- 多分类f1分数_分类模型的F1-score、Precision和Recall 计算过程
分类模型的F1分值.Precision和Recall 计算过程 引入 通常,我们在评价classifier的性能时使用的是accuracy 考虑在多类分类的背景下 accuracy = (分类正确的样 ...
- 分类决策树考虑了经验风险吗_数据挖掘导论 第4章 分类:基本概念、决策树与模型评估...
第4章 分类:基本概念.决策树与模型评估 分类(classification):分类任务就是通过学习得到一个目标函数(target function)f,把每个属性集x映射到一个余弦定义的类标号y.目 ...
- ML之ME/LF:机器学习中的模型评估指标/损失函数(连续型/离散型)的简介、损失函数/代价函数/目标函数之间区别、案例应用之详细攻略
ML之ME/LF:机器学习中的模型评估指标/损失函数(连续型/离散型)的简介.损失函数/代价函数/目标函数之间区别.案例应用之详细攻略 目录 损失函数的简介 损失函数/代价函数/目标函数之间区别 损失 ...
- 周志华 《机器学习初步》模型评估与选择
周志华 <机器学习初步>模型评估与选择 Datawhale2022年12月组队学习 ✌ 文章目录 周志华 <机器学习初步>模型评估与选择 一.泛化能力 二.过拟合和欠拟合 泛化 ...
- 机器学习基础:模型评估(下)
目录 1. 引言 2. 进一步评估 3. 机器学习中的偏差和方差种类 3.1 过拟合 3.2 欠拟合 3.3 训练曲线观察泛化性 3.4 模型偏差和方差(bias and variance) 3.4. ...
- ML之ME/LF:机器学习中常见模型评估指标/损失函数(LiR损失、L1损失、L2损失、Logistic损失)求梯度/求导、案例应用之详细攻略
ML之ME/LF:机器学习中常见模型评估指标/损失函数(LiR损失.L1损失.L2损失.Logistic损失)求梯度/求导.案例应用之详细攻略 目录 常见损失函数求梯度案例 1.线性回归求梯度 2.L ...
最新文章
- DLT(DeepLearningTracker)学习与代码理解 (1)
- python测试开发自学教程-Web开发哪家强?看我用 Python 写一个颜值测试小工具
- python数据库操作批量sql执行_使用Python批量修改数据库执行Sql文件
- 计算机将成为学生们的老师英语,七年级英语(牛津版)第一学期7A完成句子练习题...
- Transformer模型总结
- [转载红鱼儿]kbmmw 开发点滴:Authorization failed.
- java 1.6 ubuntu_ubuntu配置 Java SE 1.6
- mysql解压缩版配置_MySQL 5.6 for Windows 解压缩版配置安装
- 20172313 2018-2019-1 《程序设计与数据结构》第六周学习总结
- 第一次带姐姐和弟弟去看海
- 52 - 算法 - 数据结构 vector
- 磁盘格式 mac android,MacDroid for mac(安卓手机数据传输助手)
- plsql保持长连接_知乎千万级高性能长连接网关是如何搭建的
- 吉林省谷歌高清卫星地图下载
- 解决Wireshark安装Npcap组件失败
- python 函数进阶_python之函数进阶
- 哈希函数(hash函数)
- python用什么软件编程?
- jasper 引入字体_MAC下JasperStudio创建及引用字体
- 【LorMe云讲堂】徐凌:利用全基因组促进可持续农业
热门文章
- Linux负载均衡Linux Virtual Server (lvs) 内核自带的负载均衡器
- 在Linux上进行动态注入 | LD_PRELOAD
- VPP命令行:启动配置,HTTP服务,DPDK配置
- 数据字典模板_巧用单元格保护功能+字典技术,制作高大上的人员信息录入表...
- 发动机性能测试软件,发动机的性能测试方法
- 红外遥控c语言,NEC协议红外遥控器
- unity 的Cinemachine组件运用
- 连接Android与ASP.NET Core Web API的完整教程
- 在IIS上部署ASP.NET Core Web API
- VSCode 6 月 Java 更新,编辑器就该有编辑器的样子