使用代表聚类 (CURE)
Clustering using Representatives (CURE)
我需要一个数值示例来演示使用 CURE 算法进行聚类的工作原理。
https://www.cs.ucsb.edu/~veronika/MAE/summary_CURE_01guha.pdf
pyclustering 库有许多带示例的聚类算法,以及 Github 上的示例代码。 Here is a link the CURE example.
Google Cure algorithim example 也提出了一些公平的建议。
希望对您有所帮助!
使用 pyclustering 库,您可以使用相应的方法(link 到 CURE pyclustering generated documentation)提取有关代表点和均值的信息:
# create instance of the algorithm
cure_instance = cure(<algorithm parameters>);
# start processing
cure_instance.process();
# get allocated clusteres
clusters = cure_instance.get_clusters();
# get representative points
representative = cure_instance.get_representors();
您还可以修改 CURE 算法的源代码以显示每个步骤后的变化,例如,将它们打印到控制台甚至可视化。这是一个示例,如何修改代码以显示每个聚类步骤的变化 (after line 219),其中星号表示代表点,小点 - 点本身和大点 - 表示:
# New cluster and updated clusters should relocated in queue
self.__insert_cluster(merged_cluster);
for item in cluster_relocation_requests:
self.__relocate_cluster(item);
#
# ADD FOLLOWING PEACE OF CODE TO DISPLAY CHANGES ON EACH STEP
#
temp_clusters = [ cure_cluster_unit.indexes for cure_cluster_unit in self.__queue ];
temp_representors = [ cure_cluster_unit.rep for cure_cluster_unit in self.__queue ];
temp_means = [ cure_cluster_unit.mean for cure_cluster_unit in self.__queue ];
visualizer = cluster_visualizer();
visualizer.append_clusters(temp_clusters, self.__pointer_data);
for cluster_index in range(len(temp_clusters)):
visualizer.append_cluster_attribute(0, cluster_index, temp_representors[cluster_index], '*', 7);
visualizer.append_cluster_attribute(0, cluster_index, [ temp_means[cluster_index] ], 'o');
visualizer.show();
您将看到图像序列,类似于:
因此,您可以显示任何您需要的信息。
我还想补充一点,您可以使用 C++ 实现的可视化算法(这也是 pyclustering 的一部分):https://github.com/annoviko/pyclustering/blob/master/ccore/src/cluster/cure.cpp
我需要一个数值示例来演示使用 CURE 算法进行聚类的工作原理。
https://www.cs.ucsb.edu/~veronika/MAE/summary_CURE_01guha.pdf
pyclustering 库有许多带示例的聚类算法,以及 Github 上的示例代码。 Here is a link the CURE example.
Google Cure algorithim example 也提出了一些公平的建议。
希望对您有所帮助!
使用 pyclustering 库,您可以使用相应的方法(link 到 CURE pyclustering generated documentation)提取有关代表点和均值的信息:
# create instance of the algorithm
cure_instance = cure(<algorithm parameters>);
# start processing
cure_instance.process();
# get allocated clusteres
clusters = cure_instance.get_clusters();
# get representative points
representative = cure_instance.get_representors();
您还可以修改 CURE 算法的源代码以显示每个步骤后的变化,例如,将它们打印到控制台甚至可视化。这是一个示例,如何修改代码以显示每个聚类步骤的变化 (after line 219),其中星号表示代表点,小点 - 点本身和大点 - 表示:
# New cluster and updated clusters should relocated in queue
self.__insert_cluster(merged_cluster);
for item in cluster_relocation_requests:
self.__relocate_cluster(item);
#
# ADD FOLLOWING PEACE OF CODE TO DISPLAY CHANGES ON EACH STEP
#
temp_clusters = [ cure_cluster_unit.indexes for cure_cluster_unit in self.__queue ];
temp_representors = [ cure_cluster_unit.rep for cure_cluster_unit in self.__queue ];
temp_means = [ cure_cluster_unit.mean for cure_cluster_unit in self.__queue ];
visualizer = cluster_visualizer();
visualizer.append_clusters(temp_clusters, self.__pointer_data);
for cluster_index in range(len(temp_clusters)):
visualizer.append_cluster_attribute(0, cluster_index, temp_representors[cluster_index], '*', 7);
visualizer.append_cluster_attribute(0, cluster_index, [ temp_means[cluster_index] ], 'o');
visualizer.show();
您将看到图像序列,类似于:
因此,您可以显示任何您需要的信息。
我还想补充一点,您可以使用 C++ 实现的可视化算法(这也是 pyclustering 的一部分):https://github.com/annoviko/pyclustering/blob/master/ccore/src/cluster/cure.cpp