Python实现简单层次聚类算法以及可视化

  

本文实例为大家分享了Python实现简单层次聚类算法,以及可视化,供大家参考,具体内容如下

  

基本的算法思路就是:把当前组间距离最小的两组合并成一组。

  

算法的差异在算法如何确定组件的距离,一般有最大距离,最小距离,平均距离,马氏距离等等。

  

代码如下:

        进口numpy np   进口data_helper   np.random.seed (1)   def get_raw_data (n):   _data=https://www.yisu.com/zixun/np.random.rand (n, 2)   #生成数据的格式是n个(x, y)   _groups={idx: [[x, y]] idx的(x, y)列举(_data)}   返回_groups   def cal_distance (cluster1, cluster2):   #采用最小距离作为聚类标准   _min_distance=10000   (x1, y1 cluster1:   x2, y2 cluster2:   _distance=(x1, x2)) * * 2 + (y1 y2) * * 2   如果_distance <_min_distance:   _min_distance=_distance   返回_distance   组=get_raw_data (10)   数=0   虽然len(组)!=1:#判断是不是所有的数据是不是归为了同一类   min_distance=10000   len_groups=len(组)      因为我在groups.keys ():   在groups.keys j ():   如果我>=珍:   继续   距离=cal_distance(组[我],[j]组)   如果距离我   组[min_i] .extend (groups.pop (min_j))   data_helper.draw_data(集团)   #一共n个簇,共迭代n - 1次   之前      

运行的效果就是迭代一次,组数就会少一次,调用画图方法,同一组的数据被显示为一个颜色。

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

Python实现简单层次聚类算法以及可视化