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

在对各种数据集进行预测的过程中,最后一步总是要显示算法预测的准确度。注意,是准确度accuracy而不是查准率precision,这两个概念很容易混淆。

苏南大叔:机器学习的算法中,关于预测准确率的N种实现方案 - 精准度计算方案
机器学习的算法中,关于预测准确率的N种实现方案(图5-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码故事。本文测试环境:win10python@3.12.0pandas@2.1.3catboost@1.2.5

前文回顾

准确度accuracy,说的是整体样本中,被准备预测的比例。无论是阴性样本还是阳性样本。而查准率precision,说的是目标(阳性)样本中,被正确预测的比例。区别在于样本范围,accuracy范围是全体,precision说的目标群体。参考文章:

测试的样本集还是使用最经典的鸢尾花数据集,算法就使用最新文章里面的catboost算法。基础代码就参考这篇文章吧。直接跳转到准确度计算部分。参考文章:

苏南大叔:机器学习的算法中,关于预测准确率的N种实现方案 - 预测基础代码
机器学习的算法中,关于预测准确率的N种实现方案(图5-2)

预测结果:

[1 2 2 2 1 1 0 0 1 1 0 2 2 0 0 2 2 2 2 0 0 2 0 1]

真实值:

[1 1 2 2 1 1 0 0 1 1 0 2 2 0 0 2 2 1 2 0 0 2 0 1]

样本总数:24,预测成功数:22,准确度:91.666666%。

至此,展开本文的故事。

方案一,model.score()通用【推荐】

可以使用最通用的model.score()

# model = ...
p1 = model.score(X_true, y_true)
print("准确率方案一:", p1)
注意,这里的参数是X_truey_true

方案二,accuracy_score()通用

from sklearn.metrics import accuracy_score
p2 = accuracy_score(y_true,y_pred)
print('准确率方案二:',p2)
注意,这里的参数是y_truey_pred

苏南大叔:机器学习的算法中,关于预测准确率的N种实现方案 - 准确率方案
机器学习的算法中,关于预测准确率的N种实现方案(图5-3)

方案三,classification_report()可查看

这个report()的结果,表面上看是个表格类的结构化数据。但是打印type的话,是个string字符串,所以从中单独拆分出准确度accuracy的话,是个相对麻烦的事情。

from sklearn.metrics import classification_report
report = classification_report(y_true, y_pred)
print('准确率方案三:\n',report,type(report))

苏南大叔:机器学习的算法中,关于预测准确率的N种实现方案 - 准确率方案三
机器学习的算法中,关于预测准确率的N种实现方案(图5-4)

参考文章:

方案四,自定义函数

仅仅是因为求转置数据有很多种方案,所以细分上也为很多方案。注意这里的数据维度是二维,如果是更多维度,这里的代码可能要做些修改。

import numpy as np
p4 = sum(y_pred.T[0] == y_true) / len(y_true)*100
print(f"准确率方案四: {p4}%")

p4_2 = sum(y_pred.swapaxes(0,1)[0] == y_true) / len(y_true)*100
print(f"准确率方案四: {p4_2}%")

p4_3 = sum(np.transpose(y_pred)[0] == y_true) / len(y_true)*100
print(f"准确率方案四: {p4_3}%")

p4_4 = sum(np.transpose(y_pred, axes=(1, 0))[0] == y_true) / len(y_true)*100
print(f"准确率方案四: {p4_4}%")

苏南大叔:机器学习的算法中,关于预测准确率的N种实现方案 - 准确率方案四
机器学习的算法中,关于预测准确率的N种实现方案(图5-5)

参考文章:

结语

可见,准确度的计算除了官方提供的方法,也还有很多原始的算法的。万变不离其宗,都是计算和实际符合的样本数的比例的。更多机器学习的相关文章,请参考:

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

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

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

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