列出同一集群下的节点(使用pyclustering-k_medoid)-排序最接近的节点
我在k-medoids / yclustering下使用.get_clusters()函数来获取所有聚类。我可以打印出所有集群和医务人员。我想按顺序打印(距离最近)
我需要做的是列出属于集群的所有节点(同样,我使用pyclustering和一些随机的初始种子来做k形参)。我想打印出群集中所有节点的顺序,这些节点按它们到该群集相应质体的距离排序。假设节点“ 14”是簇的中心。我想知道如何打印节点3、10、23、2(基于它们离中心的距离有多近)。谢谢
答案 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")