机器学习的算法中,关于预测准确率的N种实现方案
发布于 作者:苏南大叔 来源:程序如此灵动~

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

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码故事。本文测试环境:win10
,python@3.12.0
,pandas@2.1.3
,catboost@1.2.5
。
前文回顾
准确度accuracy
,说的是整体样本中,被准备预测的比例。无论是阴性样本还是阳性样本。而查准率precision
,说的是目标(阳性)样本中,被正确预测的比例。区别在于样本范围,accuracy
范围是全体,precision
说的目标群体。参考文章:
测试的样本集还是使用最经典的鸢尾花数据集,算法就使用最新文章里面的catboost
算法。基础代码就参考这篇文章吧。直接跳转到准确度计算部分。参考文章:

预测结果:
真实值:
样本总数:24,预测成功数:22,准确度:91.666666%。
至此,展开本文的故事。
方案一,model.score()
通用【推荐】
可以使用最通用的model.score()
。
注意,这里的参数是X_true
和y_true
。
方案二,accuracy_score()
通用
注意,这里的参数是y_true
和y_pred
。

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

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

参考文章:
- https://newsn.net/say/ndarray-transpose.html
- https://newsn.net/say/ndarray-swapaxes.html
- https://newsn.net/say/dataframe-t.html
- https://newsn.net/say/python-string-f.html
结语
可见,准确度的计算除了官方提供的方法,也还有很多原始的算法的。万变不离其宗,都是计算和实际符合的样本数的比例的。更多机器学习的相关文章,请参考:


