我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

已经有这么多机器学习的预测模型(换参数之后更多)了,模型自带了一个model.score(X_test, y_test)来评价自己的预测结果。那么,sklearn作为这些模型的合集,也是有个专门的评价体系的,相关的函数都放在sklearn.metrics.里面。本文将对其内置的三个模型预测结果的评分函数进行阐述。

苏南大叔:利用sklearn的metrics,如何评估模型预测结果的好坏? - sklearn-metrics
利用sklearn的metrics,如何评估模型预测结果的好坏?(图1-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程相关经验文章。本文测试环境:win10python@3.11.0sklearn@1.2.2

已知的预测模型

截止到发稿,苏南大叔的文章里面,写过的预测模型有下面这些:

模型名称链接地址
神经网络分类器https://newsn.net/say/sklearn-mlpclassifier.html
高斯贝叶斯分类器https://newsn.net/say/sklearn-gaussiannb.html
多项式贝叶斯分类器https://newsn.net/say/sklearn-multinomialnb.html
决策树https://newsn.net/say/sklearn-decision-tree.html
逻辑回归https://newsn.net/say/sklearn-logistic-regression.html
随机森林https://newsn.net/say/sklearn-random-forest.html
支持向量机https://newsn.net/say/sklearn-svc.html
K近邻https://newsn.net/say/sklearn-k-neighbors.html

这些模型的预测过程的最后,都会输出预测结果:

predictions = model.predict(X_test)

对本次预测的效果进行自评分:

model.score(X_test, y_test)

metrics示例代码

想对预测结果进行评分,

  • 获得预测的结果,这个预测结果是属于二分类的概念,即非黑即白,符合结果或者不符合结果。
  • 必须知道数据真实的情况,一般来说就是测试集的y_test值,记录了真实的情况,和预测的数据可能符合也可能不符合。
# ...
predictions = model.predict(X_test)
score = model.score(X_test, y_test)
需要数据metrics参数模型变量
真实数据y_truey_test
预测结果y_predpredictions
y_test = []         # 真实结果
predictions = []    # 预测数据
from sklearn.metrics import precision_score, recall_score, f1_score
p = precision_score(y_test, predictions)   # 查准率
r = recall_score(y_test, predictions)      # 召回率
f1 = f1_score(y_test, predictions)         # f1得分(f1值越高,模型预测越有价值)

查准率:precision_score()

这里的中文表述为:查准率,并不是“精准度”。所以它表述的是:被认定为有问题的样品中,真正有问题的样品的比率。尽量不冤枉好人,也不放过每个坏人。

metrics.precision_score(y_true, y_pred)

两者的参数是不同的:

函数名称形参实参
model.score()X_test, y_test
metrics.precision_score()y_true, y_predy_test, predictions

举例:一共出库100箱食品货物,其中有一箱子是过期需要追回的,实际追回了五箱子,其中就有目标货物。所以,查准率是20%。

召回率/查全率:recall_score()

召回率(查全率),讲求一个目标数据的发现率,宁可错杀一百,不可放过一个。只要目标数据都找到,有多少被误判的都无所谓。

metrics.recall_score(y_true, y_pred)

举例:出库的一大车食品货物里面,有一箱过期食品。结果把两大车货物又拉回来了,那么召回率是100%。即使绝大多数货物都是没有问题的。

f1得分:metrics.f1_score()

metrics.f1_score(y_true, y_pred)

这个f1得分实际上包含了查准率(precision_score)和查全率(recall_score)的概念,是两者的综合描述。所以,f1得分越高,就越能体现模型预测的精准。

结束语

感觉这个recall英文单词对于“查全”的意思表述的不是很精确。更多基于sklearn的机器学习的经验文章,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python    sklearn