使用Sklearn计算F1得分



我试图弄清楚为什么F1分数在sklearn中是什么。我知道它被计算为:

F1 = 2 * (precision * recall) / (precision + recall)

我的代码:

from sklearn.metrics import f1_score, precision_score, recall_score
...
fmeasure1 = f1_score(true_output, predicted_output, average="macro")
fmeasure2 = f1_score(true_output, predicted_output, average="micro")
precision = precision_score(true_output, predicted_output, average="macro")
recall = recall_score(true_output, predicted_output, average="macro")
print 2*(precision*recall)/(precision + recall), fmeasure1, fmeasure2

我获得的数据值是:

0.785744255639 0.769527615775 0.984532095901

我不明白为什么这三个值彼此不同。我尝试在这里阅读文档,但我仍然迷路了。

我的数据集是mutli级的,从本质上讲,我的数据集高度不平衡。这里的哪个值是"正确"的值,并通过扩展为平均参数(即无,微,宏,重量)的哪个值?

谢谢,任何见解都会很有价值。

查看返回值:

Returns:    
f1_score : float or array of float, shape = [n_unique_labels]
F1 score of the positive class in binary classification or weighted average of the F1 scores of each class for the multiclass task.

每个值是该特定类别的F1分数,因此每个类都可以用不同的分数预测。

关于最佳分数是多少。

best value at 1 and worst score at 0.[ [From documentation]][1]

在旁注中

如果您想要平均预测average='weighted'

sklearn.metrics.f1_score(y_true, y_pred, labels=None, pos_label=1, average='weighted')

相关内容

  • 没有找到相关文章

最新更新