说明:如果是要用matlab做kmeans聚类分析,直接使用函数kmeans即可。使用方法:kmeans(输入矩阵,分类个数k)。
转载一:
MATLAB提供了两种方法进行聚类分析:
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);
分类结果:{ 加拿大} ,{ 中国,美国,澳大利亚} ,{ 日本,印尼} ,{ 巴西} ,{ 前苏联}
相关推荐
matlab自带聚类分析函数,用法详解。
聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来 进行计算的。 k-means 算法的工作过程说明如下:首先从n个数据对象任意选择 k 个对象作为初始聚类中心;而对于所剩下其它对象 ,则根据...
程序很短,都是用的matlab自带的函数,但能说明matlab处理分层聚类的流程及常用函数。
matlab实现kmeans聚类算法,利用matlab自带工具箱的函数
我们得到了一组具有某些特征的项目数据集,以及这些特征的值(如向量)。 任务是将这些项目分类成组。 为此,我们将使用 kMeans 算法;... 在这个特定的代码中,我在 MATLAB 中实现了 k 均值算法,而不使用内置函数
利用matlab实现FCM算法,算法最终返回距离类中心,和每个样本对于不同类的隶属度矩阵。同时,使用随机生成的100个二维数据,进行算法程序的检验,给出具体的迭代次数和目标函数值,以及聚类的结果图。
使用MATLAB手打k-means聚类函数,通过矩阵运算提高运行速度,带有详细...矩阵运算加速后,该函数聚类速度与MATLAB自带聚类函数相当甚至更快。 压缩包中附带K-means聚类实现原理介绍及收敛性分析文件(readme.pdf)。
基于密度的聚类算法,DBSCAN算法,在Matlab上实现。文档中包含两个txt的数据集,读者可替换数据集感受DBScan算法聚类的实现结果。
使用matlab内置图像'tree.tif' 实现K-means算法进行图像分割
通过比较自编MATLAB 的k-means 算法程序和SPSS 中自带的k-means聚类工具,对两个数据集聚类,并分析了聚类结果。
65 聚类分析工具箱FuzzyClusteringToolbox 66 遗传规划matlab工具箱 67 粒子群优化工具箱 68 数字图像处理工具箱DIPUM Toolbax V1.1.3 69 遗传算法工具箱 70 鱼群算法工具箱OptimizedAFSAr 71 蚁群算法工具箱 72 ...
一个模糊C均值聚类算法的matlab程序。程序中自带数据生成函数。
65 聚类分析工具箱FuzzyClusteringToolbox 66 遗传规划matlab工具箱 67 粒子群优化工具箱 68 数字图像处理工具箱DIPUM Toolbax V1.1.3 69 遗传算法工具箱 70 鱼群算法工具箱OptimizedAFSAr 71 蚁群算法工具箱 72 ...
使用模糊C均值聚类进行图像分割,使用Matlab自带的fcm函数。包含源代码和仿真报告
使用Matlab语言写的模糊c均值聚类算法,它不同于里面自带的fcm函数,也能快速的运行分类,
用matlab自带函数编写的k-means,用于图像多类自动聚类分割。大家自己可以写成function的形式。很方便,很实用。适用于初学k-means的人。