聚类分析的一个典型案例

对变量进行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'

你可能感兴趣的:(其他,聚类)