【发布时间】: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