如何理解sklearn的精度指标?

时间:2016-03-07 13:32:33

标签: python scikit-learn

你好我正在使用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如何计算这个结果,因为在官方页面中说这是计算下一个公式:tp /(tp + fp)其中tp是真阳性的数量,fp是误报的数量,但是也正在使用名为“宏”的参数来计算每个标签的指标,并找到它们的未加权平均值,这不会考虑标签不平衡。 我要感谢对此示例的任何解释,感谢您的支持。

1 个答案:

答案 0 :(得分:2)

第一步是计算每个标签的精度:

  • 表示标签0精度为tp / (tp + fp) = 2 / (2 + 1) = 0.66
  • 表示标签1的精度为0 / (0 + 2) = 0
  • 表示标签2的精度为0 / (0 + 1) = 0

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