目前已知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 聚类的更多相关文章

  1. MATLAB聚类有效性评价指标(外部 成对度量)

    MATLAB聚类有效性评价指标(外部 成对度量) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 更多内容,请看:MATLAB: Clustering ...

  2. MATLAB聚类有效性评价指标(外部)

    MATLAB聚类有效性评价指标(外部) 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 更多内容,请看:MATLAB.聚类.MATLAB聚类有效性评价指 ...

  3. Matlab聚类分析[转]

    Matlab聚类分析[转] Matlab提供系列函数用于聚类分析,归纳起来具体方法有如下: 方法一:直接聚类,利用clusterdata函数对样本数据进行一次聚类,其缺点为可供用户选择的面较窄,不能更 ...

  4. 机器学习笔记----Fuzzy c-means(FCM)模糊聚类详解及matlab实现

    前言:这几天一直都在研究模糊聚类.感觉网上的文档都没有一个详细而具体的讲解,正好今天有时间,就来聊一聊模糊聚类. 一:模糊数学 我们大家都知道计算机其实只认识两个数字0,1.我们平时写程序其实也是这样 ...

  5. K均值聚类算法的MATLAB实现

    1.K-均值聚类法的概述    之前在参加数学建模的过程中用到过这种聚类方法,但是当时只是简单知道了在matlab中如何调用工具箱进行聚类,并不是特别清楚它的原理.最近因为在学模式识别,又重新接触了这 ...

  6. Matlab实现K-Means聚类算法

    人生如戏!!!! 一.理论准备 聚类算法,不是分类算法.分类算法是给一个数据,然后判断这个数据属于已分好的类中的具体哪一类.聚类算法是给一大堆原始数据,然后通过算法将其中具有相似特征的数据聚为一类. ...

  7. 关于k-means聚类算法的matlab实现

    在数据挖掘中聚类和分类的原理被广泛的应用. 聚类即无监督的学习. 分类即有监督的学习. 通俗一点的讲就是:聚类之前是未知样本的分类.而是根据样本本身的相似性进行划分为相似的类簇.而分类 是已知样本分类 ...

  8. MATLAB中“fitgmdist”的用法及其GMM聚类算法

    MATLAB中“fitgmdist”的用法及其GMM聚类算法 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 高斯混合模型的基本原理:聚类——GMM,MA ...

  9. 聚类——GAKFCM的matlab程序

    聚类——GAKFCM的matlab程序 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 在聚类——GAKFCM文章中已介绍了GAKFCM算法的理论知识, ...

随机推荐

  1. 【BZOJ-2725】故乡的梦 Dijsktra + Tarjan + Dinic + BFS + 堆

    2725: [Violet 6]故乡的梦 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 502  Solved: 173[Submit][Status ...

  2. oracle 常用sql

    -- 在sql中只有别名时用的是双引号select employee_id,last_name,12*salary as yearSalary from employees; select last_ ...

  3. UOJ20 解方程

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

  4. codeforces 613D:Kingdom and its Cities

    Description Meanwhile, the kingdom of K is getting ready for the marriage of the King's daughter. Ho ...

  5. Disciz!NT开源资源汇总

    https://github.com/easonjim/dnt/releases/tag/0

  6. Linux VFS Extended Attribute And Access Control Table

    catalog . 简介 . 扩展属性 . 访问控制表 . 小结 0. 简介 许多文件系统都提供了一些特性,扩展了VFS层提供的标准功能,虚拟文件系统不可能为所有特性都提供具体的数据结构.超出标准的U ...

  7. POJ 1659 Frogs' Neighborhood(Havel-Hakimi定理)

    题目链接: 传送门 Frogs' Neighborhood Time Limit: 5000MS     Memory Limit: 10000K Description 未名湖附近共有N个大小湖泊L ...

  8. 二项分布和Beta分布

    原文为: 二项分布和Beta分布 二项分布和Beta分布 In [15]: %pylab inline import pylab as pl import numpy as np from scipy ...

  9. POJ - Til the Cows Come Home(Dijkstra)

    题意: 有N个点,给出从a点到b点的距离,当然a和b是互相可以抵达的,问从1到n的最短距离 分析: 典型的模板题,但是一定要注意有重边,因此需要对输入数据加以判断,保存较短的边,这样才能正确使用模板. ...

  10. hdu 2007 - 平方和与立方和

    题目大意: 给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和. 解答: 坑你没商量!要考虑输入数a,b的大小.如果a>b,需要交换a,b的值. 1: #include<s ...