初始有m个数据, 那么系统聚类一开始就有m个类, 再根据类之间的距离函数, 将最近的类聚集在一起, 直到用户设定的K
a=[[1,0],
[1,1],
[3,2],
[4,3],
[2,5]]
cluster=[]
for i in range(shape(a)[0]):
cluster.append([i])
a=array(a)
centers=a.copy()
centers=centers.astype('float')
m,n=shape(a)
我们给出一个简单的例子, 只有5条数据
我依次演示这个聚类过程
for k in range(m-1):#m
d=zeros((m-k,m-k))
for i in range(m-k):
for j in range(i+1,m-k):
d[i,j]=mandist(centers[i],centers[j])
nzInd=nonzero(d) #take care of it
minInd=d[nzInd].argmin(0)
mA=nzInd[0][minInd]
mB=nzInd[1][minInd]
cluster[mA].extend(cluster[mB])
cluster.remove(cluster[mB])
print cluster
for i in range(m-k-1):
#cluster distance: core method
centers[i]=mean(a[cluster[i]],