如何使用scikit-learn剪影得分计算scipy的fcluster的Silhouette Score?

时间:2015-01-10 10:15:42

标签: python scipy scikit-learn hierarchical-clustering

我使用scipy.cluster.hierarchy.linkage作为聚类算法,并将结果链接矩阵传递给scipy.cluster.hierarchy.fcluster,以获得针对各种阈值的展平群集。

我想计算结果的Silhouette得分并比较它们以选择最佳阈值,并且不想自己实现它,而是使用scikit-learn's sklearn.metrics.silhouette_score。 如何重新排列我的聚类结果作为sklearn.metrics.silhouette_score的输入?

1 个答案:

答案 0 :(得分:5)

你不必。

fcluster的结果可以直接输入silhouette_score。

distmatrix1 = scipy.spatial.distance.squareform(distmatrix + distmatrix.T)
ddgm = scipy.cluster.hierarchy.linkage(distmatrix1, method="average")
nodes = scipy.cluster.hierarchy.fcluster(ddgm, 4, criterion="maxclust")
metrics.silhouette_score(distmatrix + distmatrix.T , nodes, metric='euclidean')