集群之间的距离kmeans sklearn python

LN_*_*N_P 2 python distance k-means scikit-learn

我正在使用sklearn的k均值聚类对数据进行聚类。现在,我想知道群集之间的距离,但是找不到。我可以计算每个质心之间的距离,但想知道是否有一个函数可以获取它,以及是否有一种方法可以获取每个聚类之间的最小/最大/平均链接距离。我的代码很简单:

km = KMeans(n_clusters = 5, random_state = 1)
km.fit(X_tfidf )

clusterkm = km.cluster_centers_

clusters = km.labels_.tolist()
Run Code Online (Sandbox Code Playgroud)

谢谢!

Tgs*_*591 6

不幸的是,您将不得不自己计算群集中心上的距离。Scikit没有提供开箱即用的方法。这是一个类似的问题设置:

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from sklearn.metrics.pairwise import euclidean_distances

X, y = load_iris(return_X_y=True)
km = KMeans(n_clusters = 5, random_state = 1).fit(X)
Run Code Online (Sandbox Code Playgroud)

以及如何计算距离:

dists = euclidean_distances(km.cluster_centers_)
Run Code Online (Sandbox Code Playgroud)

然后,要获取您感兴趣的统计信息,您只需要在距离矩阵的上(或下)三角角上进行计算:

import numpy as np
tri_dists = dists[np.triu_indices(5, 1)]
max_dist, avg_dist, min_dist = tri_dists.max(), tri_dists.mean(), tri_dists.min()
Run Code Online (Sandbox Code Playgroud)