python分类预测降低准确率_【火炉炼AI】机器学习011-分类模型的评估:准确率,精确率,召回率,F1值...

【火炉炼AI】机器学习011-分类模型的评估:准确率,精确率,召回率,F1值

(本文所使用的Python库和版本号: Python 3.5, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 )

在前面的(【火炉炼AI】机器学习004-岭回归器的构建和模型评估)中,讲解了回归模型的评估方法,主要有均方误差MSE, 解释方差分,R方得分等指标。

同样的,对于分类模型,也有很多评估指标来判断该分类模型是否达到我们的要求,这几个评估指标主要是指:准确率(accuracy),精确率(precision),召回率(recall),F1值(F1 measure)。

1. 指标的基本概念和计算方法

1.1 准确率(Accuracy)

准确率的定义是:对于给定的测试集,分类模型正确分类的样本数与总样本数之比。举个例子来讲,有一个简单的二分类模型(暂时叫做Classifier_A),专门用于分类苹果和梨,在某个测试集中,有30个苹果+70个梨,这个二分类模型在对这个测试集进行分类的时候,得出该数据集有40个苹果(包括正确分类的25个苹果和错误分类的15个梨)和60个梨(包括正确分类的55个梨和错误分类的5个苹果)。画成矩阵图为:

7cb8759b0680

从图中可以看出,行表示该测试集中实际的类别,比如苹果类一共有25+5=30个,梨类有15+55=70个。其中被分类模型正确分类的是该表格的对角线所在的数字。在sklearn中,这样一个表格被命名为混淆矩阵(Confusion Matrix),所以,按照准确率的定义,可以计算出该分类模型在测试集上的准确率为:

7cb8759b0680

即,该分类模型在测试集上的准确率为80%。

但是,准确率指标并不总是能够评估一个模型的好坏,比如对于下面的情况,假如有一个数据集,含有98个苹果,2个梨,而分类器(暂时叫做Classifier_B)是一个很差劲的分类器,它把数据集的所有样本都划分为苹果,也就是不管输入什么样的样本,该模型都认为该样本是苹果。那么这个表格会是什么样的了?

7cb8759b0680

则该模型的准确率为98%,因为它正确地识别出来了测试集中的98个苹果,只是错误的把2个梨也当做苹果,所以按照准确率的计算公式,该模型有高达98%的准确率。

可是,这样的模型有意义吗?一个把所有样本都预测为苹果的模型,反而得到了非常高的准确率,那么问题出在哪儿了?只能说准确率不可信。特别是对于这种样品数量偏差比较大的问题,准确率的“准确度”会极大的下降。所以,这时就需要引入其他评估指标评价模型的好坏了。

1.2 精确率(Precision)

精确率的定义是:对于给定测试集的某一个类别,分类模型预测正确的比例,或者说:分类模型预测的正样本中有多少是真正的正样本,其计算公式是:

7cb8759b0680

所以,根据定义,精确率要区分不同的类别,比如上面我们讨论有两个类别,所以要分类来计算各自的精确率。对于上面提到的Classifier_A和Classifier_B分类模型,我们可以分别计算出其精确率:

<

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值