【发布时间】:2016-10-06 05:04:15
【问题描述】:
您好,我正在使用 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')
另一方面,如果我们采用这个参数,改变 average='micro' :
precision_score(y_true, y_pred, average='micro')
然后我们得到:
0.33
如果我们取平均值='加权':
precision_score(y_true, y_pred, average='weighted')
那么我们得到:
0.22.
当平均参数设置为“加权”或“微”时,我不太了解 sklearn 如何计算此指标,如果有人能给我一个清晰的解释,我真的很感激。
【问题讨论】:
标签: scikit-learn