转载一:
1
、利用
clusterdata
函数对数据样本进行一次聚类,这个方法简洁方便,其特点是使用范围较窄,不能由用户根据自身需要来设定参数,更改距离计算方法;
2
、分步聚类:(
1
)用
pdist
函数计算变量之间的距离,找到数据集合中两辆变量之间的相似性和非相似性;(
2
)用
linkage
函数定义变量之间的连接;(
3
)用
cophenetic
函数评价聚类信息;(
4
)用
cluster
函数进行聚类。
下边详细介绍两种方法:
1
、一次聚类
Clusterdata
函数可以视为
pdist
、
linkage
与
cluster
的综合,一般比较简单。
【
clusterdata
函数:
调用格式:
T=clusterdata(X,cutoff)
等价于Y=pdist(X,’euclid’); Z=linkage(Y,’single’); T=cluster(Z,cutoff)
】
2
、分步聚类
(
1
)求出变量之间的相似性
用
pdist
函数计算出相似矩阵,有多种方法可以求距离,若此前数据还未无量纲化,则可用
zscore
函数对其标准化
【
pdist
函数:
调用格式:
Y=pdist(X,’metric’)
说明:
X
是
M*N
矩阵,为由
M
个样本组成,每个样本有
N
个字段的数据集
metirc
取值为:’
euclidean’
:欧氏距离(默认)
‘seuclidean’
:标准化欧氏距离;
‘mahalanobis’
:马氏距离
…
】
pdist
生成一个
M*(M-1)/2
个元素的行向量,分别表示
M
个样本两两间的距离。这样可以缩小保存空间,不过,对于读者来说却是不好操作,因此,若想简单直观的表示,可以用
squareform
函数将其转化为方阵,其中
x(i,j)
表示第
i
个样本与第
j
个样本之的距离,对角线均为
0.
(
2
)用
linkage
函数来产生聚类树
【
linkage
函数:
调用格式:
Z=linkage(Y,’method’)
说明:
Y
为
pdist
函数返回的
M*(M-1)/2
个元素的行向量,
method
可取值:
‘single’
:最短距离法(默认);
’complete’
:最长距离法;
‘average’
:未加权平均距离法;
’weighted’:
加权平均法
‘centroid’
:
质心距离法;
‘median’
:加权质心距离法;
‘ward’
:内平方距离法(最小方差算法)
】
返回的
Z
为一个
(M-1)*3
的矩阵,其中前两列为索引标识,表示哪两个序号的样本可以聚为同一类,第三列为这两个样本之间的距离。另外,除了
M
个样本以外,对于每次新产生的类,依次用
M+1
、
M+2
、
…
来标识。
为了表示
Z
矩阵,我们可以用更直观的聚类数来展示,
方法为:
dendrogram(Z),
产生的聚类数是一个
n
型树,最下边表示样本,然后一级一级往上聚类,最终成为最顶端的一类。纵轴高度代表距离列。
另外,还可以设置聚类数最下端的样本数,默认为
30
,可以根据修改
dendrogram(Z,n)
参数
n
来实现,
1<n<M
。
dendrogram(Z,0)
则表
n=M
的情况,显示所有叶节点。
(
3
)用
cophenetic
函数评价聚类信息
【
cophenet
函数:
调用格式:
c=cophenetic(Z,Y)
说明:利用
pdist
函数生成的
Y
和
linkage
函数生成的
Z
计算
cophenet
相关系数。】
cophene
检验一定算法下产生的二叉聚类树和实际情况的相符程度
,
就是检测二叉聚类树中各元素间的距离和
pdist
计算产生的实际的距离之间有多大的相关性,另外也可以用
inconsistent
表示量化某个层次的聚类上的节点间的差异性。
(
4
)最后,用
cluster
进行聚类,返回聚类列。
转载二:
Matlab
提供了两种方法进行聚类分析。
一种是利用
clusterdata
函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更改距离的计算方法;
另一种是分步聚类:(
1
)找到数据集合中变量两两之间的相似性和非相似性,用
pdist
函数计算变量之间的距离;(
2
)用
linkage
函数定义变量之间的连接;(
3
)用
cophenetic
函数评价聚类信息;(
4
)用
cluster
函数创建聚类。
1
.
Matlab
中相关函数介绍
1.1 pdist
函数
调用格式:
Y=pdist(X,’metric’)
说明:用
‘metric’
指定的方法计算
X
数据矩阵中对象之间的距离。
’
X
:一个
m
×
n
的矩阵,它是由
m
个对象组成的数据集,每个对象的大小为
n
。
metric’
取值如下:
‘euclidean’
:欧氏距离(默认);
‘seuclidean’
:标准化欧氏距离;
‘mahalanobis’
:马氏距离;
‘cityblock’
:布洛克距离;
‘minkowski’
:明可夫斯基距离;
‘cosine’
:
‘correlation’
:
‘hamming’
:
‘jaccard’
:
‘chebychev’
:
Chebychev
距离。
1.2 squareform
函数
调用格式:
Z=squareform(Y,..)
说明:
强制将距离矩阵从上三角形式转化为方阵形式,或从方阵形式转化为上三角形式。
1.3 linkage
函数
调用格式:
Z=linkage(Y,’method’)
说
明:用‘
method
’参数指定的算法计算系统聚类树。
Y
:
pdist
函数返回的距离向量;
method
:可取值如下:
‘single’
:最短距离法(默认);
‘complete’
:最长距离法;
‘
average
’:未加权平均距离法;
‘
weighted
’: 加权平均法;
‘centroid’
:质心距离法;
‘median’
:加权质心距离法;
‘ward’
:内平方距离法(最小方差算法)
返回:
Z
为一个包含聚类树信息的(
m-1
)×
3
的矩阵。
1.4 dendrogram
函数
调用格式:
[H
,
T
,
…]=dendrogram(Z,p
,
…)
说明:生成只有顶部
p
个节点的冰柱图(谱系图)。
1.5 cophenet
函数
调用格式:
c=cophenetic(Z,Y)
说明:利用
pdist
函数生成的
Y
和
linkage
函数生成的
Z
计算
cophenet
相关系数。
1.6 cluster
函数
调用格式:
T=cluster(Z,…)
说明:根据
linkage
函数的输出
Z
创建分类。
1.7 clusterdata
函数
调用格式:
T=clusterdata(X,…)
说明:根据数据创建分类。
T=clusterdata(X,cutoff)
与下面的一组命令等价:
Y=pdist(X,’euclid’);
Z=linkage(Y,’single’);
T=cluster(Z,cutoff);
2. Matlab
程序
2.1
一次聚类法
X=[11978 12.5 93.5 31908;…;57500 67.6 238.0 15900];
T=clusterdata(X,0.9)
2.2
分步聚类
Step1
寻找变量之间的相似性
用
pdist
函数计算相似矩阵,有多种方法可以计算距离,进行计算之前最好先将数据用
zscore
函数进行标准化。
X2=zscore(X); %
标准化数据
Y2=pdist(X2); %
计算距离
Step2
定义变量之间的连接
Z2=linkage(Y2);
Step3
评价聚类信息
C2=cophenet(Z2,Y2); //0.94698
Step4
创建聚类,并作出谱系图
T=cluster(Z2,6);
H=dendrogram(Z2);
分类结果:
{
加拿大
}
,
{
中国,美国,澳大利亚
}
,
{
日本,印尼
}
,
{
巴西
}
,
{
前苏联
}
剩余的为一类。
引自:
http://blog.sina.com.cn/s/blog_5a13cf680100aj18.html
转载于:https://www.cnblogs.com/qqingmu/archive/2009/02/25/1398215.html