sklearn.metrics.accuracy_score函数有矛盾吗?
Is there contradiction in the sklearn.metrics.accuracy_score function?
根据我的阅读,Jaccard 指数是通过 (intersection/union) 计算的。 Formula for Jaccard index
而且似乎对于二进制情况,sklearn.metrics.accuracy_score 应该等同于 Jaccard 索引。但是,我对使用此功能时得到的结果感到困惑。例如:
from sklearn import metrics
y=np.array([0,0,0,0,1,1])
y2=np.array([1,1,0,0,1,1])
metrics.accuracy_score(y,y2)
这应该导致 Jaccard 指数为 4/(6+6-4)=0.5,对吗?
然而,最后一行代码的结果是 0.67,这显然是基于 similar/total 计算得出的。我是否误解了 Jaccard 指数公式?
您的 1d 数组被视为 6 个样本,Jaccard 指数的公式是每个样本 ,您可以在 the User Guide 的公式中看到更好的结果, 并非所有样本。 (多类和多标签示例可能有助于解决这个问题。)
二分类情况下,预测标签互斥穷举,0或1;因此交集对于正确预测的大小为 1,否则为 0,而并集对于正确预测的大小为 1,否则为 2,因此每个样本的 Jaccard 索引为 1 或 0。然后对所有样本进行平均(“。 ..计算 Jaccard 相似系数的平均值...”来自用户指南),这与准确度相同。
根据我的阅读,Jaccard 指数是通过 (intersection/union) 计算的。 Formula for Jaccard index
而且似乎对于二进制情况,sklearn.metrics.accuracy_score 应该等同于 Jaccard 索引。但是,我对使用此功能时得到的结果感到困惑。例如:
from sklearn import metrics
y=np.array([0,0,0,0,1,1])
y2=np.array([1,1,0,0,1,1])
metrics.accuracy_score(y,y2)
这应该导致 Jaccard 指数为 4/(6+6-4)=0.5,对吗? 然而,最后一行代码的结果是 0.67,这显然是基于 similar/total 计算得出的。我是否误解了 Jaccard 指数公式?
您的 1d 数组被视为 6 个样本,Jaccard 指数的公式是每个样本 ,您可以在 the User Guide 的公式中看到更好的结果, 并非所有样本。 (多类和多标签示例可能有助于解决这个问题。)
二分类情况下,预测标签互斥穷举,0或1;因此交集对于正确预测的大小为 1,否则为 0,而并集对于正确预测的大小为 1,否则为 2,因此每个样本的 Jaccard 索引为 1 或 0。然后对所有样本进行平均(“。 ..计算 Jaccard 相似系数的平均值...”来自用户指南),这与准确度相同。