目前已知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-1441】Min 裴蜀定理 + 最大公约数

    1441: Min Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 471  Solved: 314[Submit][Status][Discuss] De ...

  2. 判断IE和Edge

    //判断是否是IE浏览器,包括Edge浏览器function IEVersion() { var userAgent = navigator.userAgent; if (!!window.Activ ...

  3. codeforces 613D:Kingdom and its Cities

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

  4. Webpack打包工具实时更新操作(启用观察者模式)

    可能存在这样的问题,每次修改完js/css文件之后,都要进行手动打包一下,浏览器上刷新一下. 那么我一般这样做: 1.安装Hbuilder,并启用边编辑边看的模式(其实这个是默认的). 2.启动Web ...

  5. WinRAR命令行

    用法: rar <命令> -<开关 1> -<开关 N> <压缩文件> <文件...> <@列表文件...> <解压路径\ ...

  6. nginx location在配置中的优先级

    location表达式类型 ~ 表示执行一个正则匹配,区分大小写~* 表示执行一个正则匹配,不区分大小写^~ 表示普通字符匹配.使用前缀匹配.如果匹配成功,则不再匹配其他location.= 进行普通 ...

  7. RabbitMQctl命令

    RabbitMQControl RabbitMQ提供了可视化的网页供我们进行一些配置与操作,但是ctl的命令比UI来的专业的多,一些UI无法完成的操作就需要使用ctl命令来进行处理了 这里是官方的文档 ...

  8. CentOS 下安装

    2016年12月5日15:25:58 ----------------------------------- 通常情况下在centos下安装软件就用yum. 关键是,使用yum你要知道安装包的名字是什 ...

  9. Win10 Theano Install Guide

    basic install guide 1. download miniconda 2. conda install libpython mingw 3. conda install theano n ...

  10. JSF JQUERY 使用datepicker

    不推荐使用.可以用primefaces的p:Calendar替代,更换控制使用. 简单使用jquery的datepicker示例: <!doctype html> <html lan ...