聚类分析应用
-
建立综合评价指标体系
-
R型聚类分析
根据数据猜测 每10万人口高等院校招生数,每10万人口高等院校在校生数,等等,有可能存在较强的相关性,验证猜想做一个R型聚类分析。
clc,clear; a = load('gj.txt'); b = zscore(a); % 标准化数据 r = corrcoef(b); % 计算相关系数矩阵 % d = tril(1-r); d = nonzeros(d)'; d = pdist(b','correlation'); % 计算距离,d2 == d z = linkage(d,'average'); % 按类平均法聚类 h = dendrogram(z); % 画聚类图
需要注意的是,要对数据进行标准化,里面的数据有的是高校数目,有的是人口数,单位悬殊差别太大,标准化公式:
![](https://images2017.cnblogs.com/blog/891404/201801/891404-20180122163537569-1782343401.png)
函数调用zscore(a)
相关系数公式:
![](https://images2017.cnblogs.com/blog/891404/201801/891404-20180122163549178-153743326.png)
函数调用corrcoef(b)
然后计算距离,画聚类图。
发现变量
5个变量的相关性是非常高的。考虑只用其中一个变量代替 。
-
Q型聚类分析
clc,clear; load gj.txt; gj(:,[3:6]) = []; % 删除第3~6列 gj = zscore(gj); % 数据标准化 d = pdist(gj); % 求两两对象之间的距离,欧氏距离 z = linkage(d,'average'); % 按类平均法聚类 dendrogram(z); % 画聚类图 for k = 3:5 fprintf('划分成%d类的结果如下\n',k); T = cluster(z,'maxclust',k); % 样本点划分成 k 类 for i = 1 : k % 求每类中有哪些样本点 tm = find(T==i); tm = reshape(tm,1,length(tm)); fprintf('第%d类的有%s\n',i,int2str(tm)); end fprintf('*******************************************************************\n'); end
先删除
然后标准化,算距离,聚类,画聚类图,按照需求分类: