Machine Learning | (6) Scikit-learn的分类器算法-性能评估

简介: Machine Learning | (6) Scikit-learn的分类器算法-性能评估

Machine Learning | 机器学习简介


Machine Learning | (1) Scikit-learn与特征工程


Machine Learning | (2) sklearn数据集与机器学习组成


Machine Learning | (3) Scikit-learn的分类器算法-k-近邻


Machine Learning | (4) Scikit-learn的分类器算法-逻辑回归


Machine Learning | (5) Scikit-learn的分类器算法-朴素贝叶斯


Machine Learning | (6) Scikit-learn的分类器算法-性能评估


分类器性能评估

在许多实际问题中,衡量分类器任务的成功程度是通过固定的性能指标来获取。一般最常见使用的是准确率,即预测结果正确的百分比。然而有时候,我们关注的是负样本是否被正确诊断出来。例如,关于肿瘤的的判定,需要更加关心多少恶性肿瘤被正确的诊断出来。也就是说,在二类分类任务下,预测结果(Predicted Condition)与正确标记(True Condition)之间存在四种不同的组合,构成混淆矩阵。


在二类问题中,如果将一个正例判为正例,那么就可以认为产生了一个真正例(True Positive,TP);如果对一个反例正确的判为反例,则认为产生了一个真反例(True Negative,TN)。相应地,两外两种情况则分别称为伪反例(False Negative,FN,也称)和伪正例(False Positive,TP),四种情况如下图:


image.png

image.png

在分类中,当某个类别的重要性高于其他类别时,我们就可以利用上述定义出多个逼错误率更好的新指标。第一个指标就是正确率(Precision),它等于TP/(TP+FP),给出的是预测为正例的样本中占真实结果总数的比例。第二个指标是召回率(Recall)。它等于TP/(TP+FN),给出的是预测为正例的真实正例占所有真实正例的比例。


那么除了正确率和精确率这两个指标之外,为了综合考量召回率和精确率,我们计算这两个指标的调和平均数,得到F1指标(F1 measure):


{F1}={\frac{2}{\frac{1}{Precision}{+}\frac{1}{Recall}}}F1=Precision1+Recall12


之所以使用调和平均数,是因为它除了具备平均功能外,还会对那些召回率和精确率更加接近的模型给予更高的分数;而这也是我们所希望的,因为那些召回率和精确率差距过大的学习模型,往往没有足够的使用价值。


sklearn.metrics.classification_report

sklearn中metrics中提供了计算四个指标的模块,也就是classification_report。

classification_report(y_true, y_pred, labels=None, target_names=None, digits=2)
  """
  计算分类指标
  :param y_true:真实目标值
  :param y_pred:分类器返回的估计值
  :param target_names:可选的,计算与目标类别匹配的结果
  :param digits:格式化输出浮点值的位数
  :return :字符串,三个指标值
  """

我们通过一个例子来分析一下指标的结果:

from sklearn.metrics import classification_report
y_true = [0, 1, 2, 2, 2]
y_pred = [0, 0, 2, 2, 1]
target_names = ['class 0', 'class 1', 'class 2']
print(classification_report(y_true, y_pred, target_names=target_names))
             precision    recall  f1-score   support
    class 0       0.50      1.00      0.67         1
    class 1       0.00      0.00      0.00         1
    class 2       1.00      0.67      0.80         3
avg / total       0.70      0.60      0.61         5
目录
相关文章
|
2月前
|
存储 弹性计算 算法
倚天产品介绍|倚天ECS加速国密算法性能
倚天ECS是阿里云基于平头哥自研数据中心芯片倚天710推出arm架构实例,采用armv9架构,支持SM3/SM4指令,可以加速国密算法性能。本文基于OpenSSL 3.2和Tongsuo 实测对比了倚天ECS g8y实例和Intel g7 实例国密性能。为用户选择ECS提供参考。
|
1月前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
1月前
|
机器学习/深度学习 数据采集 算法
Machine Learning机器学习之K近邻算法(K-Nearest Neighbors,KNN)
Machine Learning机器学习之K近邻算法(K-Nearest Neighbors,KNN)
|
1月前
|
存储 算法 编译器
掌握Go语言:探索Go语言递归函数的高级奥秘,优化性能、实现并发、解决算法难题(28)
掌握Go语言:探索Go语言递归函数的高级奥秘,优化性能、实现并发、解决算法难题(28)
|
7天前
|
算法 安全 Java
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
【4月更文挑战第28天】性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
21 1
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
|
7天前
|
机器学习/深度学习 算法 Python
【Python 机器学习专栏】随机森林算法的性能与调优
【4月更文挑战第30天】随机森林是一种集成学习方法,通过构建多棵决策树并投票或平均预测结果,具有高准确性、抗过拟合、处理高维数据的能力。关键性能因素包括树的数量、深度、特征选择和样本大小。调优方法包括调整树的数量、深度,选择关键特征和参数优化。Python 示例展示了使用 GridSearchCV 进行调优。随机森林广泛应用于分类、回归和特征选择问题,是机器学习中的重要工具。
|
9天前
|
数据采集 算法 安全
数据分享|R语言关联规则挖掘apriori算法挖掘评估汽车性能数据
数据分享|R语言关联规则挖掘apriori算法挖掘评估汽车性能数据
|
20天前
|
机器学习/深度学习 算法 前端开发
Scikit-learn进阶:探索集成学习算法
【4月更文挑战第17天】本文介绍了Scikit-learn中的集成学习算法,包括Bagging(如RandomForest)、Boosting(AdaBoost、GradientBoosting)和Stacking。通过结合多个学习器,集成学习能提高模型性能,减少偏差和方差。文中展示了如何使用Scikit-learn实现这些算法,并提供示例代码,帮助读者理解和应用集成学习提升模型预测准确性。
|
4月前
|
存储 人工智能 搜索推荐
【探索排序算法的魅力:优化、性能与实用技巧】(下)
【探索排序算法的魅力:优化、性能与实用技巧】
|
4月前
|
搜索推荐
【探索排序算法的魅力:优化、性能与实用技巧】(中)
【探索排序算法的魅力:优化、性能与实用技巧】