matlab 聚类
目前已知matlab的聚类方法有三种:
一、利用 clusterdata函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更改距离的计算方法;
二、层次聚类,该方法较为灵活,需要进行细节了解聚类原理,具体需要进行如下过程处理:
(1)找到数据集合中变量两两之间的相似性和非相似性,用pdist函数计算变量之间的距离;
(2)用 linkage函数定义变量之间的连接;
(3)用 cophenetic函数评价聚类信息;
(4)用cluster函数创建聚类。
三、划分聚类,包括K均值聚类和K中心聚类,同样需要系列步骤完成该过程,要求使用者对聚类原理和过程有较清晰的认识。
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’:jaccard相似性系数
‘chebychev’:Chebychev距离。
Y:输出,m个对象中两两之间的距离,为一个行向量,长度为
。
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的矩阵。
Z=linkage(Y)
Z =
3.0000 4.0000 0.2228
2.0000 5.0000 0.5401
1.0000 7.0000 1.0267
6.0000 9.0000 1.0581
8.0000 10.0000 1.3717
Z数组的前两列是索引下标列,最后一列是距离列。例如上例中表示在产生聚类树的计算过程中,第3和第4点先聚成一类,他们之间的距离是0.2228,以此类推。要注意的是,为了标记每一个节点,需要给新产生的聚类也安排一个标识,MATLAB中会将新产生的聚类依次用m+1,m+2,....依次来标识。比如第3和第4点聚成的类以后就用7来标识,第2和第5点聚成的类用8来标识,依次类推。
通过linkage函数计算之后,实际上二叉树式的聚类已经完成了。只是这个数据数组不大好看,可以用dendrogram(Z)来可视化聚类树。
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函数
调用格式有两种:1)T=clusterdata(X,cutoff);
2)T=clusterdata(X,param1,val1,param2,val2,...)
说明:根据数据创建分类。
1)T=clusterdata(X,cutoff);
当0<cutoff<2时,T=clusterdata(X,cutoff)与下面的一组命令等价:
Y=pdist(X,’euclid’);
Z=linkage(Y,’single’);
T=cluster(Z,'cutoff',cutoff);
当cutoff是个不小于2的整数时,T=clusterdata(X,cutoff)与下面的一组命令等价:
Y=pdist(X,’euclid’);
Z=linkage(Y,’single’);
T=cluster(Z,'maxclust',cutoff);
2)T=clusterdata(X,param1,val1,param2,val2,...)的选择空间更大些,参数参照如下表:

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);
matlab 聚类的更多相关文章
- MATLAB聚类有效性评价指标(外部 成对度量)
MATLAB聚类有效性评价指标(外部 成对度量) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 更多内容,请看:MATLAB: Clustering ...
- MATLAB聚类有效性评价指标(外部)
MATLAB聚类有效性评价指标(外部) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 更多内容,请看:MATLAB.聚类.MATLAB聚类有效性评价指 ...
- Matlab聚类分析[转]
Matlab聚类分析[转] Matlab提供系列函数用于聚类分析,归纳起来具体方法有如下: 方法一:直接聚类,利用clusterdata函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更 ...
- 机器学习笔记----Fuzzy c-means(FCM)模糊聚类详解及matlab实现
前言:这几天一直都在研究模糊聚类.感觉网上的文档都没有一个详细而具体的讲解,正好今天有时间,就来聊一聊模糊聚类. 一:模糊数学 我们大家都知道计算机其实只认识两个数字0,1.我们平时写程序其实也是这样 ...
- K均值聚类算法的MATLAB实现
1.K-均值聚类法的概述 之前在参加数学建模的过程中用到过这种聚类方法,但是当时只是简单知道了在matlab中如何调用工具箱进行聚类,并不是特别清楚它的原理.最近因为在学模式识别,又重新接触了这 ...
- Matlab实现K-Means聚类算法
人生如戏!!!! 一.理论准备 聚类算法,不是分类算法.分类算法是给一个数据,然后判断这个数据属于已分好的类中的具体哪一类.聚类算法是给一大堆原始数据,然后通过算法将其中具有相似特征的数据聚为一类. ...
- 关于k-means聚类算法的matlab实现
在数据挖掘中聚类和分类的原理被广泛的应用. 聚类即无监督的学习. 分类即有监督的学习. 通俗一点的讲就是:聚类之前是未知样本的分类.而是根据样本本身的相似性进行划分为相似的类簇.而分类 是已知样本分类 ...
- MATLAB中“fitgmdist”的用法及其GMM聚类算法
MATLAB中“fitgmdist”的用法及其GMM聚类算法 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 高斯混合模型的基本原理:聚类——GMM,MA ...
- 聚类——GAKFCM的matlab程序
聚类——GAKFCM的matlab程序 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 在聚类——GAKFCM文章中已介绍了GAKFCM算法的理论知识, ...
随机推荐
- 【BZOJ-2839】集合计数 容斥原理 + 线性推逆元 + 排列组合
2839: 集合计数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 229 Solved: 120[Submit][Status][Discuss] ...
- 【poj3261】 Milk Patterns
http://poj.org/problem?id=3261 (题目链接) 题意 给出n个数和k,求在给出的数中,最长的出现至少k次的可重叠子串. solution 后缀数组论文题,感觉分组思想可能会 ...
- Process
--- - hosts: test gather_facts: false tasks: - name: Task1 shell: ls notify: Hander3 - name: Task2 s ...
- EF-CodeFirst-3搞事
本文学习旺杰兄的 CodeFirst 系列教程而写.尽量摆脱之前的影子写出自己的理解 表间关系.级联删除 简单玩法已经走通了,但是我就是想搞点事出来.今天来搞搞表间关系和级联删除 表间关系 毫无疑问在 ...
- JSF JQUERY 使用datepicker
不推荐使用.可以用primefaces的p:Calendar替代,更换控制使用. 简单使用jquery的datepicker示例: <!doctype html> <html lan ...
- 如何用iframe标签以及Javascript制作时钟?
如何利用iframe标签以及Javascript制作时钟? 如何制作一个时钟呢?效果如下图所示: 这里的时钟会不停的走,但是下面的页面是不会变得,这样就实现了我们想要的效果了.下面我将分为以下几个方面 ...
- spring--aop总结
AOP(Aspect Oriented Programming的缩写)所用的思想其实和设计模式是一样的,即在不修改原代码的情况下统一增加或者修改功能.还有,AOP大多用在spring里面. AOP是面 ...
- jQuery 基础(4)jQuery 尺寸
jQuery 尺寸方法jQuery 提供多个处理尺寸的重要方法:width()height()innerWidth()innerHeight()outerWidth()outerHeight()jQu ...
- mybatis的批量删除
公司工程用的是Mybatis的example的类,自动生成了对数据库的操作,批量操作的今天用到了,两种方式,一种需要拓展它生成的类,另一种自带的. 批量删除的id是以集合List传递 id以List& ...
- asp.net下调用Matlab生成动态链接库
对于这次论文项目,最后在写一篇关于工程的博客,那就是在asp.net下调用matlab生成的dll动态链接库.至今关于matlab,c/c++(opencv),c#(asp.net)我总共写了4篇配置 ...