我理解 Jaccard 指数是共同元素的数量除以不同元素的总数。但是,对于将 Jaccard 应用于“二进制向量”(即具有二进制属性(0、1)的向量或“整数向量”,即具有整数值(2、5、 6、8)。
根据向量中元素的类型,有两个公式?
这个答案评论了“二进制向量”,“它们可以被解释为值为 1 的索引集”。然而,有些例子中 Jaccard 系数是用整数向量计算的,所以它似乎是有效的。此外,scikit-learn 似乎定义了 3 种情况:
二进制向量
y_true = np.array([[0, 1, 1],
[1, 1, 0]])
y_pred = np.array([[1, 1, 1],
[1, 0, 0]])
多标签案例
(什么是多标签案例在 scikit-learn 文档中没有定义)
“多类问题被二值化并像对应的多标签问题一样对待”
y_pred = [0, 2, 1, 2]
y_true = [0, 1, 2, 2]
使用公式形式的 R 库的附加测试
TP / (TP + FP + FN)
导致未定义的行为:
library("ClusterR")
pc <- c(0, 1, 2, 5, 6, 8, 9)
tc <- c(0, 2, 3, 4, 5, 7, 9)
external_validation(pc, tc, method = "jaccard_index")
[1] NaN
使用基于集合的公式是否仅适用于二元向量?