sklearn如何计算precision_score度量



你好,我正在与sklearn合作,为了更好地理解度量,我遵循了以下precision_score示例:

from sklearn.metrics import precision_score
y_true = [0, 1, 2, 0, 1, 2]
y_pred = [0, 2, 1, 0, 0, 1]
print(precision_score(y_true, y_pred, average='macro'))  

我得到的结果如下:

0.222222222222

我知道sklearn按照以下步骤计算结果:

  • 对于标签0,精度为tp/(tp+fp)=2/(2+1)=0.66
  • 对于标签1,精度为0/(0+2)=0
  • 对于标签2,精度为0/(0+1)=0

,最后sklearn通过所有三个标签计算平均精度:precision = (0.66 + 0 + 0) / 3 = 0.22

如果我们取这个参数,就会得到这个结果:

precision_score(y_true, y_pred, average='macro')

另一方面,如果我们取这个参数,改变平均值="微米":

precision_score(y_true, y_pred, average='micro') 

然后我们得到:

0.33

如果我们取平均值="加权":

precision_score(y_true, y_pred, average='weighted')

然后我们得到:

0.22.

我不太明白当平均参数设置为"加权"或"微观"时,sklearn是如何计算这个指标的,如果有人能给我一个明确的解释,我真的很感激。

'micro':

通过将标签指示符矩阵的每个元素视为标签来全局计算度量。

'macro':

计算每个标签的指标,并找到它们的未加权平均值。此不考虑标签不平衡

'weighted':

计算每个标签的指标,并找到它们的平均值,按支持度加权(每个标签的真实实例数)

'samples':

计算每个实例的度量,并找到它们的平均值。

http://scikit-learn.org/stable/modules/generated/sklearn.metrics.average_precision_score.html

对于支持措施:http://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html

基本上是班级成员。

3.3.2.12.接收器工作特性(ROC)

函数roc_curve计算接收器工作特性曲线或roc曲线。引用维基百科:

"受试者工作特性(ROC),或简称ROC曲线,是一个图形图,说明二元分类器系统在判别阈值变化时的性能。它是通过绘制阳性中的真阳性分数(TPR=真阳性率)与阴性中的假阳性分数(FPR=假阳性率)来创建的,在各种阈值设置下。TPR也被称为敏感性,FPR是一减去特异性或真阴性率。">

TN/真阴性:病例为阴性,预测为阴性。

TP/真阳性:病例为阳性,预测为阳性。

FN/假阴性:病例为阳性,但预测为阴性。

FP/假阳性:病例为阴性,但预测为阳性#基本术语

confusion = metrics.confusion_matrix(expected, predicted)
print confusion,"n"
TN, FP    = confusion[0, 0], confusion[0, 1]
FN, TP    = confusion[1, 0], confusion[1, 1]
print 'Specificity:        ',  round(TN / float(TN + FP),3)*100, "n"
print 'Sensitivity:        ',  round(TP / float(TP + FN),3)*100, "(Recall)"

相关内容

  • 没有找到相关文章

最新更新