1 函数原型:
scipy.cluster.hierarchy.linkage(y, method='single', metric='euclidean', optimal_ordering=False)
函数功能:进行层次聚类/凝聚聚类。
参数:
y: 可以是1维压缩向量(距离向量),也可以是2维观测向量(坐标矩阵)。若y是1维压缩向量,则y必须是n个初始观测值的组合,n是坐标矩阵中成对的观测值。
返回值:(n-1)*4的矩阵Z(后面会仔细的讲解返回值各个字段的含义)
linkage方法用于计算两个聚类簇s和t之间的距离d(s,t),这个方法的使用在层次聚类之前。当s和t行程一个新的聚类簇u时,s和t被从森林(已经形成的聚类簇群)中移除,而用新的聚类簇u来代替。当森林中只有一个聚类簇时算法停止。而这个聚类簇就成了聚类树的根。
距离矩阵在每次迭代中都将被保存,d[i,j]对应于第i个聚类簇与第j个聚类簇之间的距离。每次迭代必须更新新形成的聚类簇之间的距离矩阵。
假定现在有|u|个初始观测值u[0],...,u[|u|-1]在聚类簇u中,有|v|个初始对象v[0],...,v[|v|-1]在聚类簇v中。回忆s和t合并成u。让v成为森林中的聚类簇,而不是u。
下面是计算新形成的聚类簇u和v之间距离的方法:
method = ‘single’
d(u,v) = min(dist(u[i],u[j]))
对于u中所有点i和v中所有点j。这被称为最近邻点算法。
method = 'complete'
d(u,v) = max(dist(u[i],u[j]))