Matlab聚类分析(ClusterAnalyses)zz wavecluster 小波聚类

citedfrom:http://blog.sina.com.cn/s/blog_629f79b101012c1l.html

Matlab提供系列函数用于聚类分析,归纳起来具体方法有如下:

方法一:直接聚类,利用clusterdata函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更改距离的计算方法,该方法的使用者无需了解聚类的原理和过程,但是聚类效果受限制。
方法二:层次聚类,该方法较为灵活,需要进行细节了解聚类原理,具体需要进行如下过程处理:(1)找到数据集合中变量两两之间的相似性和非相似性,用pdist函数计算变量之间的距离;(2)用linkage函数定义变量之间的连接;(3)用cophenetic函数评价聚类信息;(4)用cluster函数创建聚类。
方法三:划分聚类,包括K均值聚类和K中心聚类,同样需要系列步骤完成该过程,要求使用者对聚类原理和过程有较清晰的认识。
接下来介绍一下Matlab中的相关函数和相关聚类方法。
1.Matlab中相关函数介绍
1.1pdist函数
调用格式:Y=pdist(X,’metric’)说明:用 ‘metric’指定的方法计算 X数据矩阵中对象之间的距离。X:一个m×n的矩阵,它是由m个对象组成的数据集,每个对象的大小为n(即n个特征值)。metric’取值如下:‘euclidean’:欧氏距离(默认);‘seuclidean’:标准化欧氏距离;‘mahalanobis’:马氏距离;‘cityblock’:布洛克距离;‘minkowski’:明可夫斯基距离;‘cosine’:‘correlation’:‘jaccard’: ‘chebychev’:Chebychev距离。
1.2 squareform 函数
调用格式:Z=squareform(Y,..)
对于M个点的数据集X,pdist之后的Y将是具有M*(M-1)/2个元素的行向量。
Y这样的显示虽然节省了内存空间,但对用户来说不是很易懂,如果需要对这些距离进行特定操作的话,也不太好索引。MATLAB中可以用squareform把Y转换成方阵形式,方阵中<i,j>位置的数值就是X中第i和第j点之间的距离,显然这个方阵应该是个对角元素为0的对称阵。

1.3 linkage函数
调用格式:Z=linkage(Y,‘method’)输入值说明:Y为pdist函数返回的M*(M-1)/2个元素的行向量,用‘method’参数指定的算法计算系统聚类树。method:可取值如下:‘single’:最短距离法(默认);‘complete’:最长距离法;‘average’:未加权平均距离法;‘weighted’: 加权平均法;‘centroid’:质心距离法;‘median’:加权质心距离法;‘ward’:内平方距离法(最小方差算法)返回值说明:Z为一个包含聚类树信息的(m-1)×3的矩阵,其中前两列为索引标识,表示哪两个序号的样本可以聚为同一类,第三列为这两个样本之间的距离。另外,除了M个样本以外,对于每次新产生的类,依次用M+1、M+2、…来标识。
1.4 dendrogram函数
调用格式:[H,T,…]=dendrogram(Z,p,…)说明:生成只有顶部p个节点的冰柱图(谱系图)。
为了表示Z矩阵,我们可以用更直观的聚类数来展示,方法为:dendrogram(Z),产生的聚类数是一个n型树,最下边表示样本,然后一级一级往上聚类,最终成为最顶端的一类。纵轴高度代表距离列。另外,还可以设置聚类数最下端的样本数,默认为30,可以根据修改dendrogram(Z,n)参数n来实现,1<n<M。dendrogram(Z,0)则表n=M的情况,显示所有叶节点。

1.5cophenet函数
调用格式:c=cophenet(Z,Y)说明:利用pdist函数生成的Y和linkage函数生成的Z计算cophenet相关系数。cophene检验一定算法下产生的二叉聚类树和实际情况的相符程度,就是检测二叉聚类树中各元素间的距离和pdist计算产生的实际的距离之间有多大的相关性,另外也可以用inconsistent表示量化某个层次的聚类上的节点间的差异性。
1.6 cluster 函数
调用格式:T=cluster(Z,…)说明:根据linkage函数的输出Z创建分类。
1.7clusterdata 函数
调用格式:T=clusterdata(X,…)说明:根据数据创建分类。
CLUSTERDATA Construct clusters from data.
T =CLUSTERDATA(X, CUTOFF) constructs clusters from data X.
X is amatrix of size M by N, treated as M observations of N
variables. CUTOFF is a threshold for cutting thehierarchical
tree generated by LINKAGE into clusters. When 0< CUTOFF < 2,
clusters areformed when inconsistent values are greater than
CUTOFF (seeINCONSISTENT). When CUTOFF is an integer and CUTOFF>= 2,
then CUTOFFis considered as the maximum number of clusters to
keep in thehierarchical tree generated by LINKAGE. The output T is
a vector of size M containing a cluster number for eachobservation.

When 0< CUTOFF < 2, T =CLUSTERDATA(X,CUTOFF) is equivalent to:
Y = pdist(X, 'euclid');
Z = linkage(Y, 'single');
T = cluster(Z, 'cutoff', CUTOFF);

When CUTOFFis an integer >= 2, T = CLUSTERDATA(X,CUTOFF) isequivalent
to:

Y = pdist(X,'euclid');
Z = linkage(Y,'single');
T = cluster(Z,'maxclust',CUTOFF)


1.8 Inconsistent
INCONSISTENT Inconsistent values of a clustertree.
Y =INCONSISTENT(Z) computes the inconsistent value of eachnon-leaf
node in the hierarchical cluster tree Z. Zis a (M-1)-by-3 matrix
generated bythe function LINKAGE. Each inconsistent value isa
measure of separation between the two clusters whose mergeis
represented by that node, compared to the separationbetween
subclusters merged within those clusters.

Y =INCONSISTENT(Z, DEPTH) computes inconsistent values bylooking
to a depthDEPTH below each node.

Y is a (M-1)-by-4 matrix, with rows corresponding to each ofthe
non-leaf nodes represented in Z. INCONSISTENTcomputes the
inconsistent value for node (M+i) using S_i, the set of nodes lessthan
DEPTH branches below node (M+i), excluding any leafnodes.
S_i是除了叶节点外,所有深度低于(M+i)不超过DEPTH的节点(包括M+i节点自身)
而Inconsistent计算的是S_i的距离的平均值。
Then

Y(i,1) = mean(Z(S_i,3)), the mean height of nodes in S_i
Y(i,2) = std(Z(S_i,3)), the standard deviation of node heights inS_i
Y(i,3) = length(S_i), the number of nodes in S_i
Y(i,4) = (Z(i,3) - Y(i,1))/Y(i,2), the inconsistent value

The defaultvalue for DEPTH is 2.
计算深度会影响不一致系数的计算结果,计算深度比较大时,不一致系数的增量能反映出当前步引入的新样品与该类中心(涉及该类中所有样品)的距离远近,计算深度比较小时,不一致系数的增量仅能反映出当前步引入的新样品与上几步聚类中涉及的样品的中心的距离远近。

2.Matlab聚类程序的设计
2.1方法一:一次聚类法(直接使用clusterdata函数)X=[11978 12.5 93.5 31908;…;57500 67.6 238.0 15900];T=clusterdata(X,0.9)
结果:
ans =

1
1
表明两个观测属于同一类。

再如下面的例子:
x1=randn(10,1);
x2=randn(10,1)+10;
x3=randn(10,1)+20;
x=[x1;x2;x3];
y=randn(30,1);
T=clusterdata([x,y],3)
temp1=find(T==1)
plot(x(temp1),y(temp1),'rd','markersize',10,'markerfacecolor','r')
hold on
temp1=find(T==2)
plot(x(temp1),y(temp1),'yd','markersize',10,'markerfacecolor','y')
temp1=find(T==3)
plot(x(temp1),y(temp1),'kd','markersize',10,'markerfacecolor','k')
legend('cluster 1','cluster 2','cluster 3')
结果如下图:

Matlab聚类分析(ClusterAnalyses)zz wavecluster 小波聚类



2.2 方法二和方法三设计流程:分步聚类Step1用pdist函数计算相似矩阵,有多种方法可以计算距离,进行计算之前有时会先将数据用zscore函数进行标准化。---------------------------------------------------------------------
ZSCOREStandardized z score.
Z =ZSCORE(X) returns a centered, scaled version of X, the same size asX.
For vectorinput X, Z is the vector of z-scores (X-MEAN(X)) ./ STD(X).For
matrix X,z-scores are computed using the mean and standard deviation
along eachcolumn of X. For higher-dimensional arrays,z-scores are
computedusing the mean and standard deviation along the first
non-singleton dimension.

The columnsof Z have sample mean zero and sample standard deviation one
(unless acolumn of X is constant, in which case that column of Z is
constant at0).
---------------------------------------------------------------------
X2=zscore(X);Y2=pdist(X2); %计算距离
Step2Z2=linkage(Y2);
Step3C2=cophenet(Z2,Y2); //0.94698
Step4 创建聚类,并作出 谱系图T=cluster(Z2,6);
MATLAB中提供了cophenet,inconsistent等表示相关性的函数。cophenet和inconsistent用来计算某些系数,前者用于检验一定算法下产生的二叉聚类树和实际情况的相符程度(就是检测二叉聚类树中各元素间的距离和pdist计算产生的实际的距离之间有多大的相关性),inconsistent则是量化某个层次的聚类上的节点间的差异性(可用于作为cluster的剪裁标准)。
有关表示相关性的函数概念的理解,需要对聚类有一个更深刻更数学的认识,我后面有机会的话会对这方面进行深入的学习与研究。

  

爱华网本文地址 » http://www.413yy.cn/a/25101016/293353.html

更多阅读

MATLAB中提升小波变换 图像小波变换 matlab

传统的第一代小波变换是在欧式空间内通过基底的平移和伸缩构造小波基的,不适合非欧式空间的应用。因此小波的提升方案应运而生,它是构造第二代小波变换的理想方法。提升的形式给出了小波完全的空间域的完全解释,它具有许多优良的特性:结

李银河王小波 《他们的世界》 王小波和李银河

 李银河与王小波合著的研究同性恋的作品。  作者序  当我们对我国的同性恋现象进行研究时,常常为这样的问题所困扰:你们为什么放着很多重大问题不去研究,而去研究同性恋?假如这种诘难来自社会学界的同仁,并不难回答。正文中将有专

王小波的意义 有关论语的论文

在小波辞世十五年之际,我想谈谈王小波的意义。起因是有记者提出一个问题:为什么主流文学界一直对王小波不予置评。他们采访到的一些官方评论家甚至说:王小波是谁?我没读过。一个客观事实是:尽管王小波在全国的大学生(甚至一些比较好的中学

电影、小波和我 小波

我从小就酷爱电影,为了看一个电影,不惜从东郊跑到西郊,穿过整座北京城。有个暑假,家里从外地来了一个表妹,我邀她跟我一起去看电影,她说:我不爱看电影。我当时觉得万分讶异,因为根本想不到这个世界上还会有不爱看电影的人。1977年认识了王

王小波《我的精神家园》读后感 王小波似水柔情读后感

关于人的精神生活问题的思考——读王小波《我的精神家园》默水【提要】王小波的杂文创作首先立足于思想,关注人习以为常的精神生活,挖掘现象背后关涉世道人心的深层面含意的东西。他的杂文是为了思想的表达,而不只是为了情感的体现。作

声明:《Matlab聚类分析(ClusterAnalyses)zz wavecluster 小波聚类》为网友斤懜分享!如侵犯到您的合法权益请联系我们删除