如何理解分析sklearn.metrics.classification_report()功能?
发布于 作者:苏南大叔 来源:程序如此灵动~

本文回顾一下sklearn.metrics
对各种模型的精确度统计功能,即查准率precision_score()
、召回率(查全率)recall_score()
、f1得分f1_score()
。其实还有一个classification_report()
函数,能同时返回上述几个得分值,同时做进一步的均值分析。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程所见所闻。本文测试环境:win10
,python@3.12.0
,pandas@2.1.3
,scikit-learn@1.3.2
。
无论结果是二分类,还是多分类,只要预测值是个一维变量【非二维】,classification_report()
的返回值格式都是一样的。本文的统一适用标准:y_pred
是个一维的变量,非二维!对应到机器学习,就是说是基于一个标签的。
基础数据
数据预测范围限于“单标签二分类”或者“单标签多分类”【类似于鸢尾花数据集】。预测结果是个单标签【例如鸢尾花的归属】。
输出:

模型得分项
对于预测结果,分别计算三个模型得分值和准确率(accuracy
)。(主要用于和classification_report()
的结果相互印证)

输出:
这里的三个得分指标,如果不传入average=None
的话,得到的就不是数组【范围是全部分类】而是普通的浮点数【范围是分类为1的阳性样本】了。
参考文章:
classification_report()
执行一下这个“报告”函数classification_report
:
输出:
可见,输出结果分为两部分,第一部分是对三个得分指标的展示,同时输出指标数据的支撑support
数据量。第二部分是对第一部分指标的进一步均分avg
统计。

设置labels标签
把数字分类,都换成好理解的中文标签,实际上就是对分类结果进行了一下解释。
输出:
support支撑数
实际上就是说:真实结果(并非预测结果)中,属于各个分类的数量总数。
宏平均数(macro avg)
宏平均数,【不考虑】支撑数,其实就是大家所熟知的平均数的概念。例如:
加权平均数(weighted avg)
加权平均数,就是要【考虑】支撑数。例如:
结语
这个.classification_report()
功能,就是个加强版的模型得分指标的统计汇总功能。本文是针对“二分类”、“多分类”的.classification_report()
功能进行分析。


