sklearn.metrics.jaccard_similarity_score 和 sklearn.metrics.accuracy_score 之间的区别是什么?
1.我们什么时候使用 accuracy_score?
2.我们什么时候使用 jaccard?
3.我知道公式。有人能解释这些度量背后的算法吗?
4.我如何在我的数据框上计算 jaccard?
array([[1, 1, 1, 1, 2, 0, 1, 0], [2, 1, 1, 0, 1, 1, 0, 1]], dtype=int64)
谢谢
回答:
accuracy_score
非常直接,这是它成为常用选择的原因之一。它是正确分类样本的数量除以总数,所以在你的例子中:
from sklearn.metrics import jaccard_score, accuracy_scoreprint(a)array([[1, 1, 1, 1, 2, 0, 1, 0], [2, 1, 1, 0, 1, 1, 0, 1]])accuracy_score(a[0,:], a[1,:])# 0.25
这与以下操作相同:
(a[0,:] == a[1,:]).sum()/a.shape[1]# 0.25
jaccard_score
特别适用于某些问题,例如对象检测。你可以通过查看Jaccard 指数来获得更好的理解,它也被称为交并比,测量两个样本集的重叠部分除以它们的并集(样本大小减去交集)。
请注意,sklearn.metrics.jaccard_similarity_score
已被弃用,你可能应该查看sklearn.metrics.jaccard_score
。后者有几种平均模式,具体取决于你最感兴趣的内容。默认情况下是binary
,但由于你处理的是多个标签,你应该更改它。
因此,根据你的应用,你会对其中一个更感兴趣。不过,如果你不确定,我建议你选择更简单的,即准确度得分。