系统聚类是将N个样品分成若干类的方法,其基本思想是:先将N个样品各看成一类,然后规定类与类之间的距离,选择距离最小的一对合并成新的一类,计算新类与其他类之间的距离,再将距离最近的两类合并,这样每次减少一类,直至所有的样品合为一类为止.
常见的距离有绝对值距离,欧氏距离,闵可夫距离,切比雪夫距离,马氏距离,兰氏距离.类与类之间的距离有很多定义的方法,主要有:类平均法,重心法,中间距离法,最长距离法,最短距离法,离差平方法,密度估计法。
定义:Cluster_System(a:array,Dmethods:integer,Methods:integer,options:array): array;
说明:sample是一个样本数据观测矩阵,每一行是一个样本数据,本函数依据各种不同的距离对样本进行谱系聚类
参数:
A:样本数据观测矩阵,每一行是一个样本数据
Dmethods:整数或字符串类型,距离方式, ,默认为欧式距离
methods:
1:组间以中心距离,默认组间中心距离
2:以组间最短距离
3:以组间最大距离
Options:默认为输出谱系树
Options['best':1]:输出最优分类
Options['tree':1]:输出谱系树,默认输出谱系关系
Options['out':0]:最佳分类排列方式。1每一行为一个类(默认)0各个样本对应的类
使用判别分析中的数据进行系统聚类分析(参见平台下的Demo_Discrim_cluster函数)
c := a[:,1:8];
Ret := cluster_system(c,1,1,array('best':1,'tree':1,'out':1));
Ret[1]:
类1 | 类2 | 聚类距离 | 类1 | 类2 | 聚类距离 |
0 | 1 | 1.816 | 3 | 4 | 3.785 |
3 | 4 | 2.203 | 2 | 3 | 5.655 |
5 | 6 | 2.513 | 8 | 9 | 5.809 |
4 | 5 | 1.368 | 6 | 8 | 3.469 |
7 | 8 | 3.226 | 0 | 1 | 6.393 |
3 | 4 | 3.345 | 1 | 2 | 6.695 |
1 | 2 | 3.531 | 3 | 5 | 6.887 |
1 | 2 | 3.687 | 1 | 2 | 8.933 |
6 | 7 | 4.366 | 4 | 5 | 9.059 |
5 | 6 | 3.628 | 3 | 4 | 8.116 |
0 | 1 | 4.812 | 2 | 3 | 9.25 |
0 | 1 | 5.008 | 0 | 1 | 9.39 |
4 | 5 | 5.294 | 0 | 1 | 21.772 |
注:第一次聚类是将0,1合并,合并后的类叫做0,并且将原来的2-最后一类都减去1作为新的类名.
Ret[0]系统聚类最佳分类:
第一类 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
第二类 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | | | |
系统聚类是将
个样品分成若干类的方法,其基本思想是:先将
个样品各看成一类,然后规定类与类之间的距离,选择距离最小的一对合并成新的一类,计算新类与其他类之间的距离,再将距离最近的两类合并,这样每次减少一类,直至所有的样品合为一类为止.
常见的距离有绝对值距离,欧氏距离,闵可夫距离,切比雪夫距离,马氏距离,兰氏距离.类与类之间的距离有很多定义的方法,主要有:类平均法,重心法,中间距离法,最长距离法,最短距离法,离差平方法,密度估计法。
定义:Cluster_System(a:array,Dmethods:integer,Methods:integer,options:array): array;
说明:sample是一个样本数据观测矩阵,每一行是一个样本数据,本函数依据各种不同的距离对样本进行谱系聚类
参数:
A:样本数据观测矩阵,每一行是一个样本数据
Dmethods:整数或字符串类型,距离方式, ,默认为欧式距离
methods:
1:组间以中心距离,默认组间中心距离
2:以组间最短距离
3:以组间最大距离
Options:默认为输出谱系树
Options['best':1]:输出最优分类
Options['tree':1]:输出谱系树,默认输出谱系关系
Options['out':0]:最佳分类排列方式。1每一行为一个类(默认)0各个样本对应的类
使用判别分析中的数据进行系统聚类分析(参见平台下的Demo_Discrim_cluster函数)
c := a[:,1:8];
Ret := cluster_system(c,1,1,array('best':1,'tree':1,'out':1));
Ret[1]:
类1 | 类2 | 聚类距离 | 类1 | 类2 | 聚类距离 |
0 | 1 | 1.816 | 3 | 4 | 3.785 |
3 | 4 | 2.203 | 2 | 3 | 5.655 |
5 | 6 | 2.513 | 8 | 9 | 5.809 |
4 | 5 | 1.368 | 6 | 8 | 3.469 |
7 | 8 | 3.226 | 0 | 1 | 6.393 |
3 | 4 | 3.345 | 1 | 2 | 6.695 |
1 | 2 | 3.531 | 3 | 5 | 6.887 |
1 | 2 | 3.687 | 1 | 2 | 8.933 |
6 | 7 | 4.366 | 4 | 5 | 9.059 |
5 | 6 | 3.628 | 3 | 4 | 8.116 |
0 | 1 | 4.812 | 2 | 3 | 9.25 |
0 | 1 | 5.008 | 0 | 1 | 9.39 |
4 | 5 | 5.294 | 0 | 1 | 21.772 |
注:第一次聚类是将0,1合并,合并后的类叫做0,并且将原来的2-最后一类都减去1作为新的类名.
Ret[0]系统聚类最佳分类:
第一类 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
第二类 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | | | |