您当前的位置: 首页 >  ar
  • 2浏览

    0关注

    2393博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

ML之HierarchicalClustering:自定义HierarchicalClustering层次聚类算法

一个处女座的程序猿 发布时间:2018-04-20 16:20:22 ,浏览量:2

ML之HierarchicalClustering:自定义HierarchicalClustering层次聚类算法

 

 

目录

输出结果

实现代码

 

 

输出结果

更新……

 

实现代码
# -*- encoding=utf-8 -*-

from numpy import *

class cluster_node:  #定义cluster_node类,类似Java中的构造函数
    def __init__(self,vec,left=None,right=None,distance=0.0,id=None,count=1):
        self.left=left  
        self.right=right
        self.vec=vec
        self.id=id
        self.distance=distance
        self.count=count #only used for weighted average 

def L2dist(v1,v2):  
    return sqrt(sum((v1-v2)**2))
    
def L1dist(v1,v2):  
    return sum(abs(v1-v2))

def hcluster(features,distance=L2dist): 
    #cluster the rows of the "features" matrix
    distances={}     
    currentclustid=-1 

    # clusters are initially just the individual rows
    clust=[cluster_node(array(features[i]),id=i) for i in range(len(features))]


    while len(clust)>1:  
        lowestpair=(0,1) 
        closest=distance(clust[0].vec,clust[1].vec)
    
        for i in range(len(clust)):
            for j in range(i+1,len(clust)):
                # distances is the cache of distance calculations
                if (clust[i].id,clust[j].id) not in distances: 
                    distances[(clust[i].id,clust[j].id)]=distance(clust[i].vec,clust[j].vec)
        
                d=distances[(clust[i].id,clust[j].id)]  
        
                if d            
关注
打赏
1664196048
查看更多评论
0.1223s