matlab聚类分析_matlab
发布:good1256 | 分类:Matlab软件培训
关于本站
人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!
获取电子版《CDA一级教材》
完整电子版已上线CDA网校,累计已有10万+在读~ 教材严格按考试大纲编写,适合CDA考生备考,也适合业务及数据分析岗位的从业者提升自我。
TOP热门关键词
免费学术公开课,扫码加入![]() |
1. 用Matlab编程实现
运用Matlab中的一些基本矩阵计算方法,通过自己编程实现聚类算法,在此只讨论根据最短距离规则聚类的方法。
调用函数:
min1.m——求矩阵最小值,返回最小值所在行和列以及值的大小
min2.m——比较两数大小,返回较小值
std1.m——用极差标准化法标准化矩阵
ds1.m——用绝对值距离法求距离矩阵
cluster.m——应用最短距离聚类法进行聚类分析
print1.m——调用各子函数,显示聚类结果
聚类分析算法
假设距离矩阵为vector, a阶,矩阵中最大值为max,令矩阵上三角元素等于max
聚类次数=a-1,以下步骤作a-1次循环:
求改变后矩阵的阶数,计作c
求矩阵最小值,返回最小值所在行e和列f以及值的大小g
forl=1:c,为vector(c+1,l)赋值,产生新类
令第c+1列元素,第e行和第f行所有元素为,第e列和第f列所有元素为max
源程序如下:
%std1.m,用极差标准化法标准化矩阵
function std=std1(vector)
max=max(vector); %对列求最大值
min=min(vector);
[a,b]=size(vector); %矩阵大小,a为行数,b为列数
for i=1:a
forj=1:b
std(i,j)= (vector(i,j)-min(j))/(max(j)-min(j));
end
end
%ds1.m,用绝对值法求距离
function d=ds1(vector);
[a,b]=size(vector);
d=zeros(a);
for i=1:a
forj=1:a
for k=1:b
d(i,j)=d(i,j)+abs(vector(i,k)-vector(j,k));
end
end
end
fprintf('绝对值距离矩阵如下:\n');
disp(d)
%min1.m,求矩阵中最小值,并返回行列数及其值
function [v1,v2,v3]=min1(vector);%v1为行数,v2为列数,v3为其值
[v,v2]=min(min(vector'));
[v,v1]=min(min(vector));
v3=min(min(vector));
%min2.m,比较两数大小,返回较小的值
function v1=min(v2,v3);
if v2>v3
v1=v3;
else
v1=v2;
end
%cluster.m,最短距离聚类法
function result=cluster(vector);
[a,b]=size(vector);
max=max(max(vector));
for i=1:a
for j=i:b
vector(i,j)=max;
end
end;
for k=1:(b-1)
[c,d]=size(vector);
fprintf('第%g次聚类:\n',k);
[e,f,g]=min1(vector);
fprintf('最小值=%g,将第%g区和第%g区并为一类,记作G%g\n\n',g,e,f,c+1);
forl=1:c
ifl<=min2(e,f)
vector(c+1,l)=min2(vector(e,l),vector(f,l));
else
vector(c+1,l)=min2(vector(l,e),vector(l,f));
end
end;
vector(1:c+1,c+1)=max;
vector(1:c+1,e)=max;
vector(1:c+1,f)=max;
vector(e,1:c+1)=max;
vector(f,1:c+1)=max;
end
%print1,调用各子函数
function print=print1(filename,a,b); %a为地区个数,b为指标数
fid=fopen(filename,'r')
vector=fscanf(fid,'%g',[a b]);
fprintf('标准化结果如下:\n')
v1=std1(vector)
v2=ds1(v1);
cluster(v2);
%输出结果
print1('fname',9,7)
2.直接调用Matlab函数实现
2.1调用函数
层次聚类法(Hierarchical Clustering)的计算步骤:
①计算n个样本两两间的距离{dij},记D
②构造n个类,每个类只包含一个样本;
③合并距离最近的两类为一新类;
④计算新类与当前各类的距离;若类的个数等于1,转到5);否则回3);
⑤画聚类图;
⑥决定类的个数和类;
Matlab软件对系统聚类法的实现(调用函数说明):
cluster 从连接输出(linkage)中创建聚类
clusterdata 从数据集合(x)中创建聚类
dendrogram 画系统树状图
linkage 连接数据集中的目标为二元群的层次树
pdist 计算数据集合中两两元素间的距离(向量)
squareform 将距离的输出向量形式定格为矩阵形式
zscore 对数据矩阵 X 进行标准化处理
各种命令解释
⑴ T =clusterdata(X, cutoff)
其中X为数据矩阵,cutoff是创建聚类的临界值。即表示欲分成几类。
以上语句等价与以下几句命令:
Y=pdist(X,’euclid’)
Z=linkage(Y,’single’)
T=cluster(Z,cutoff)
以上三组命令调用灵活,可以自由选择组合方法!
⑵ T =cluster(Z, cutoff)
从逐级聚类树中构造聚类,其中Z是由语句likage产生的(n-1)×3阶矩阵,cutoff是创建聚类的临界值。
⑶ Z = linkage(Y) Z = linkage(Y, 'method')
创建逐级聚类树,其中Y是由语句pdist产生的n(n-1)/2 阶向量,’method’表示用何方法,默认值是欧氏距离(single)。有’complete’——最长距离法;‘average’——类平均距离;‘centroid’——重心法 ;‘ward‘——递增平方和等。
⑷ Y = pdist(X) Y = pdist(X,'metric')
计算数据集X中两两元素间的距离, ‘metric’表示使用特定的方法,有欧氏距离‘euclid’、标准欧氏距离‘SEuclid’、马氏距离‘mahal’、明可夫斯基距离‘Minkowski‘ 等。
⑸ H = dendrogram(Z) H =dendrogram(Z, p)
由likage产生的数据矩阵z画聚类树状图。P是结点数,默认值是30。
2.2举例说明
设某地区有八个观测点的数据,样本距离矩阵如表1所示,根据最短距离法聚类分析。
%最短距离法系统聚类分析
X=[7.90 39.77 8.49 12.94 19.27 11.05 2.04 13.29;
7.6850.37 11.35 13.3 19.25 14.59 2.75 14.87;
9.4227.93 8.20 8.14 16.17 9.42 1.55 9.76;
9.1627.98 9.01 9.32 15.99 9.10 1.82 11.35;
10.0628.64 10.52 10.05 16.18 8.39 1.96 10.81];
BX=zscore(X); % 标准化数据矩阵
Y=pdist(X) % 用欧氏距离计算两两之间的距离
D=squareform(Y)% 欧氏距离矩阵
Z = linkage(Y) % 最短距离法
T = cluster(Z,3) 等价于 {T=clusterdata(X,3) }
find(T==3)% 第3类集合中的元素
[H,T]=dendrogram(Z) % 画聚类图
图1 聚类谱系图
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
您可能感兴趣的文章
- Matlab软件 ... | 精通MATLAB详细手册
- Matlab软件 ... | 《MATLAB语言精要及动态仿真工具 ...
- Matlab软件 ... | The Elements of MATLAB Style b ...
- Matlab软件 ... | matlab如何给Excel单元格中某些文 ...
- Matlab软件 ... | matlab入门教程 word版
- Matlab软件 ... | Matlab :A Practical Introduct ...
- Matlab软件 ... | fama 三因素的 matlab程序。
- Matlab软件 ... | matlab axis 坐标轴控制
人气文章
本文标题:matlab聚类分析_matlab
本文链接网址:https://bbs.pinggu.org/jg/ruanjianpeixun_matlabruanjianpeixun_3179950_1.html
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。



