对变量进行r型聚类,对样本进行q型聚类。
主程序:
% 将指标看成变量,进行r型聚类
load edu.txt
data = edu;
r = corrcoef(data); % 计算相关系数矩阵
[m, n] = size(data); % m为样本个数,n为指标个数
d = tril(r); % 取出下三角元素
for i = 1:n
d(i,i) = 0;
end
d = d(:);
d = nonzeros(d); % 取出非零元素
d = d';
d = 1 -d;
z = linkage(d)
dendrogram(z)
% 根据需要,从n项指标中挑选几个进行下一轮的分析
% 假设选取6项指标,接下来对m个样本进行q型聚类
data(:,3:6) = []; % 由于选取的指标是第1,2,7,8,9,10项,故删除中间无用信息
data = zscore(data);
y = pdist(data);
z = linkage(y)
dendrogram(z, 'average')
子程序1:system_cluster
系统聚类法
clc, clear
a = [1 0;
1 1;
3 2;
4 3;
2 5];
[m, n] = size(a);
y = pdist(a, 'cityblock'); % 将a看成m个大小为n的向量,生成包含距离信息的向量
yc = squareform(y) % 将距离向量转换为矩阵
z = linkage(y) % 使用最短距离法生成聚类树
[h, t] = dendrogram(z)
子程序2:var_cluster
变量聚类法
clc, clear
a = textread('data.txt');
for i = 1:14
a(i,i) = 0;
end
b = a(:); b = nonzeros(b);
b = b'; b = 1 - b;
z = linkage(b, 'complete');
y = cluster(z, 2);
dendrogram(z);
ind1 = find(y==2); ind1 = ind1'
ind2 = find(y==1); ind2 = ind2'
发表评论