matlab Q型聚类分析例题

本文通过一个具体的实例介绍了如何在MATLAB中进行Q型聚类分析,包括计算距离矩阵、进行聚类分析、生成聚类图的全过程,并详细解释了每个步骤和相关函数的使用,如pdist、linkage、dendrogram等。
摘要由CSDN通过智能技术生成

如何生成聚类图

1.计算n个样本点两两之间的距离,记为矩阵
2.构造n个类,每一个类中只包含一个样本点,每一类的平台高度均为0
3.合并距离最近的两类为新类,并且以这两类间的距离值作为聚类图中的平台高度
4.计算新类与当前各类的距离,若类的个数已经等于1,转入步骤5,否则回到步骤3
5.画聚类图
6.决定类的个数和类

EG:

设有5个销售员,他们的销售业绩由二维变量(v1,v2)描述,见表格
在这里插入图片描述
使用绝对值距离来测量点与点之间的距离,是用最短距离法来测量类与类之间的距离

1.算出距离矩阵
      w1     w2    w3    w4    w5

w1     0     1     4     6     6  
w2     1     0     3     5     5
w3     4     3     0     2     4
w4     6     5     2     0     4
w5     6     5     4     4     0
2.进行聚类分析

(1)所有的元素自成一类 H1 = {w1, w2,w3,w4,w5}。每一个类的平台高度为0,
(2)把w1,w2 合成一个新类h6,新类的平台高度为1,此时的分类情况是:
H2 = {h6,w3,w4,w5}
(3)把w3,w4 合成一个新类h7,新类的平台高度为2,此时的分类情况是:
H3 = {h6,h7,w5}
(4)把h6,h7 合成一个新类h8,新类的平台高度为3,此时的分类情况是:
H4 = {h8,w5}
(5)把h8,w5 合成一个新类h9,新类的平台高度为4,此时的分类情况是:
H5 = {h9}

代码如下:
clc,clear
a = [1,0;1,1;3,2;4,3;2,5];
[m,n] = size(a);
d = mandist(a')
d = tril(d);
nd = nonzeros(d);
nd = union(nd,nd);

for i = 1:m-1
nd_min = min(nd);
[row,col] = find(d == nd_min);tm = union(row,col);
tm = reshape(tm,1,length(tm));
fprintf('第%d次合成,平台高度为%d时的分类结果为:%s',i,nd_min,int2str(tm));
nd(find(nd == nd_min)) = [];
if length(nd) == 0
break
end 
end

代码详解:(按行注释)

聚类前的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值