sklearn计算准确率和召回率----accuracy_score、metrics.precision_score、metrics.recall_score

转自:http://d0evi1.com/sklearn/model_evaluation/

accuracy_score 

** clf.score(X_test, y_test)引用的就是accuracy_score方法(clf为分类器对象)

accuracy_score函数计算了准确率,不管是正确预测的fraction(default),还是count(normalize=False)。

在multilabel分类中,该函数会返回子集的准确率。如果对于一个样本来说,必须严格匹配真实数据集中的label,整个集合的预测标签返回1.0;否则返回0.0.

预测值与真实值的准确率,在n个样本下的计算公式如下:

accuracy(y,ŷ )=1nsamples∑i=0nsamples−1l(ŷ i=yi)accuracy(y,y^)=1nsamples∑i=0nsamples−1l(y^i=yi)

1(x)为指示函数。

>>> import numpy as np
>>> from sklearn.metrics import accuracy_score
>>> y_pred = [0, 2, 1, 3]
>>> y_true = [0, 1, 2, 3]
>>> accuracy_score(y_true, y_pred)
0.5
>>> accuracy_score(y_true, y_pred, normalize=False)
2

在多标签的case下,二分类label:

>>> accuracy_score(np.array([[0, 1], [1, 1]]), np.ones((2, 2)))
0.5

 

metrics.precision_score、metrics.recall_score

*注意正确率和召回率的计算方法,跟我理解的有点不一样

在二元分类中,术语“positive”和“negative”指的是分类器的预测类别(expectation),术语“true”和“false”则指的是预测是否正确(有时也称为:观察observation)。给出如下的定义:

 实际类目(observation) 
预测类目(expectation)TP(true positive)结果:CorrectFP(false postive)结果:Unexpected
 FN(false negative)结果: MissingTN(true negtive)结果:Correct

这里是一个二元分类的示例:

>>> from sklearn import metrics
>>> y_pred = [0, 1, 0, 0]
>>> y_true = [0, 1, 0, 1]
>>> metrics.precision_score(y_true, y_pred)
1.0
>>> metrics.recall_score(y_true, y_pred)
0.5
>>> metrics.f1_score(y_true, y_pred)  
0.66...
>>> metrics.fbeta_score(y_true, y_pred, beta=0.5)  
0.83...
>>> metrics.fbeta_score(y_true, y_pred, beta=1)  
0.66...
>>> metrics.fbeta_score(y_true, y_pred, beta=2) 
0.55...
>>> metrics.precision_recall_fscore_support(y_true, y_pred, beta=0.5)  
(array([ 0.66...,  1.        ]), array([ 1. ,  0.5]), array([ 0.71...,  0.83...]), array([2, 2]...))


>>> import numpy as np
>>> from sklearn.metrics import precision_recall_curve
>>> from sklearn.metrics import average_precision_score
>>> y_true = np.array([0, 0, 1, 1])
>>> y_scores = np.array([0.1, 0.4, 0.35, 0.8])
>>> precision, recall, threshold = precision_recall_curve(y_true, y_scores)
>>> precision  
array([ 0.66...,  0.5       ,  1.        ,  1.        ])
>>> recall
array([ 1. ,  0.5,  0.5,  0. ])
>>> threshold
array([ 0.35,  0.4 ,  0.8 ])
>>> average_precision_score(y_true, y_scores)  
0.79...
  • 10
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sklearn.metrics 模块中,有一些用于评估分类模型性能的指标。下面对 `accuracy_score`、`f1_score`、`precision_score` 和 `recall_score` 进行解释: 1. `accuracy_score`(准确率)是分类模型最常用的评估指标之一。它衡量了模型正确预测的样本数与总样本数之间的比例,即正确分类的样本数除以总样本数。准确率高表示模型的预测结果与真实标签相符的程度高。 2. `f1_score`(F1 分数)是综合考虑了模型的精确率(Precision)和召回率Recall)的评估指标。精确率衡量了模型预测为正例的样本中真正为正例的比例,召回率衡量了模型能够正确识别出的正例样本占所有正例样本的比例。F1 分数是精确率和召回率的调和平均值,它在两者之间取得平衡。 3. `precision_score`(精确率)是模型预测为正例的样本中真正为正例的比例。它衡量了模型在预测为正例时的准确性,即预测为正例的样本中有多少是真正的正例。高精确率意味着模型在预测为正例时犯错的概率较低。 4. `recall_score`(召回率)是模型能够正确识别出的正例样本占所有正例样本的比例。它衡量了模型对于正例的识别能力,即模型能够正确地找出多少正例样本。高召回率意味着模型对于正例的识别能力较强。 这些指标在分类任务中非常重要,可以帮助我们评估模型的性能并进行比较。选择合适的指标取决于具体的应用场景和任务要求。例如,当我们希望模型在预测为正例时尽可能准确时,可以关注精确率;当我们希望模型能够尽可能多地找出正例时,可以关注召回率;当我们希望综合考虑两者时,可以使用 F1 分数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值