【问题标题】:jaccard_similarity_score raises ValueError: continuous-multioutput is not supportedjaccard_similarity_score 引发 ValueError:不支持连续多输出
【发布时间】:2017-08-28 21:01:54
【问题描述】:

我想使用 Jaccard 索引(来自 sklearn.metrics 导入 jaccard_similarity_score)计算使用 KMeans 生成的集群之间的相似性。这些可能是一个包含特定值的矩阵:在 [i,j] 应该是集群 i 和 j 之间的相似性。我现在的代码:

from sklearn import datasets
from sklearn.cluster import KMeans
from sklearn.metrics import jaccard_similarity_score
iris = datasets.load_iris()
X = iris.data
kmeans = KMeans(n_clusters=3).fit(X)
labels = kmeans.labels_

for i in range(3):
        for j in range(3):
            print(jaccard_similarity_score(X[np.where(labels==i)], X[np.where(labels==j)]))

但我收到以下错误:

Traceback (most recent call last):

  File "<ipython-input-15-e7b8e4471987>", line 3, in <module>
    print(jaccard_similarity_score(X[np.where(labels==i)], X[np.where(labels==j)]))

  File "C:\Anaconda3\envs\p3\lib\site-packages\sklearn\metrics\classification.py", line 383, in jaccard_similarity_score
    y_type, y_true, y_pred = _check_targets(y_true, y_pred)

  File "C:\Anaconda3\envs\p3\lib\site-packages\sklearn\metrics\classification.py", line 89, in _check_targets
    raise ValueError("{0} is not supported".format(y_type))

ValueError: continuous-multioutput is not supported

【问题讨论】:

  • i 和 j 的两个 for 循环有什么作用?为什么从循环中调用 jaccard_similarity 分数?
  • 因为我想为每对集群计算 jaccard 索引。这些记录实际上应该输入到 matrix[i][j]

标签: python scikit-learn cluster-analysis k-means


【解决方案1】:

Jaccard 是在 sets 上定义的。

K-means 产生 连续 质心(因为它使用 mean,字面意思)。

因此,您不能在集群中心上使用 Jaccard。

【讨论】:

    猜你喜欢
    • 2016-01-06
    • 2016-01-07
    • 2017-11-12
    • 2020-05-31
    • 2019-10-01
    • 2020-06-05
    • 1970-01-01
    相关资源
    最近更新 更多