你好,我正在使用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.
当average参数设置为'weighted'或'micro'时,我不太理解sklearn如何计算此度量标准,如果有人能给我清晰的解释,我将不胜感激。