python中的K型词(聚类)

时间:2019-06-26 05:22:07

标签: python-3.x

列出同一集群下的节点(使用pyclustering-k_medoid)-排序最接近的节点

我在k-medoids / yclustering下使用.get_clusters()函数来获取所有聚类。我可以打印出所有集群和医务人员。我想按顺序打印(距离最近)

我需要做的是列出属于集群的所有节点(同样,我使用pyclustering和一些随机的初始种子来做k形参)。我想打印出群集中所有节点的顺序,这些节点按它们到该群集相应质体的距离排序。假设节点“ 14”是簇的中心。我想知道如何打印节点3、10、23、2(基于它们离中心的距离有多近)。谢谢

1 个答案:

答案 0 :(得分:0)

您需要根据节点到群集的距离对节点进行排序,下面是一个示例:

from pyclustering.samples.definitions import SIMPLE_SAMPLES
from pyclustering.cluster.kmedoids import kmedoids
from pyclustering.utils import read_sample
import pyclustering.utils.metric as metric

sample = read_sample(SIMPLE_SAMPLES.SAMPLE_SIMPLE3)

kmedoids_instance = kmedoids(sample, [8, 23, 36, 50])
kmedoids_instance.process()

clusters = kmedoids_instance.get_clusters()
medoids = kmedoids_instance.get_medoids()

for i in range(len(clusters)):
    medoid_point = sample[medoids[i]]

    clusters[i] = sorted(clusters[i], key=lambda index: metric.euclidean_distance(medoid_point, sample[index]))
    print(clusters[i])
    print("\n")