통계 분석 - 클러스터링 알고리즘 모델
거리 분석
데이터 표준화
유클리드 거리는 차원과 관련이 있기 때문에 표준화 등의 데이터 전처리가 필요한 경우가 있습니다 .
MATLAB의 명령은 호출 형식인 zscore입니다.
Z = zscore(X)
输入X表示N行p列的原始观测矩阵,行为个体,列为指标。
输出Z为X的标准化矩阵:
Z = (X–ones(N,1)*mean(X)) ./(ones(N,1)* std(X)),
mean(X)为行向量,表示各个指标的均值估计,
std(X)表示指标的标准差估计。./表示对应元素相除,
ones(N,1)表示元素全为1的行向量,向量的长度为N。
K-평균 클러스터링
K-평균 클러스터링의 알고리즘 흐름:
- 분할할 클러스터 수(클래스 수)의 K 값을 지정합니다.
- K개의 데이터 개체를 초기 클러스터 중심으로 무작위로 선택합니다(반드시 샘플 포인트는 아님).
- 나머지 데이터 개체 각각에서 K개의 초기 클러스터 중심까지의 거리를 계산하고 가장 가까운 중심이 있는 클러스터로 데이터 개체를 분류합니다.
- 새 클래스를 조정하고 새 클래스의 중심을 다시 계산합니다.
- 3단계와 4단계를 반복하여 중심이 수렴되는지(변경되지 않음) 확인합니다. 수렴하거나 반복 횟수에 도달하면 루프를 중지합니다.
- 마치다.
K-평균 클러스터링 기능
K-평균++ 클러스터링 알고리즘
SPSS 소프트웨어 사용
암호
%%
% K-means 算法MATLAB实现
%-------------------------------------------------------------
%{
利用Matlab软件中的命令: kmeans,可以实现k-means聚类
对于要处理的数据 构造矩阵,矩阵X的每一行为每个个体的实际数据,每一列都是不同的指标
如果提供的数据不是按照规范模式,需要进行矩阵转置
x=y'; %矩阵x的行为个体,列为指标
[a,b]=kmeans(x,2) %分为2类,输出: a为聚类的结果,b为聚类重心, 每一行表示一个类的重心
使用kmeans进行处理
%}
%% 数据准备和初始化
clc
clear
load kdata.mat
[a,b]=kmeans(x,3); %%分为3类输出
x1=x(find(a==1),:) %提取第1类里的样品
x2=x(find(a==2),:) %提取第2类里的样品
x3=x(find(a==3),:) %提取第3类里的样品
sd1=std(x1)
sd2=std(x2)
sd3=std(x3) % 分别计算第1类和第2类第3类的标准差
plot(x(a==1,1),x(a==1,2),'r.',x(a==2,1),x(a==2,2),'b.',x(a==3,1),x(a==3,2),'g.','MarkerSize',10) %作出聚类的散点图
title('k-means聚类分析散点图');
클러스터 분석 – 가계도 분석
클러스터링의 MATLAB 구현을 연구하기 위한 구현 단계는 대략 다음과 같습니다.
- 데이터 매트릭스를 입력하고 행과 열의 실제 의미에 주의하십시오.
- 샘플 간 거리 계산(행? 열?)
유클리드 거리: d=pdist(A) % A의 각 행 간 거리 계산에 주의하십시오.
절대 거리: d= pdist(A,'cityblock'),
Mingshi 거리: d=pdist(A,'minkowski',r), % r은 특정 실수로 채워져야 함, 분산 가중 거리
: d= pdist(A,'seuclid'),
Mahalanobis 거리: d= pdist(A,' mahal ');
참고: 위 명령의 출력은 행 벡터입니다. - 클러스터링을 위해 다른 클래스 간 거리를 선택하십시오.
- 가계 클러스터 맵 만들기
- 카테고리 수에 따라 클러스터링 결과 출력
설문조사 데이터를 활용하여 16개 지역에 대한 클러스터 분석을 수행해 보십시오.
다음 표는 1982년 우리나라 16개 지역의 농민 지출 샘플 조사의 요약 데이터입니다. 각 지역은 1인당 평균 생활 소비 지출을 반영하는 6개의 지표를 조사했습니다.
혈통 클러스터 다이어그램
a=load('ho2.txt');%导入数据
d1=pdist(a);% 此时计算出各行之间的欧氏距离,
z1=linkage(d1);
z2=linkage(d1,'complete');
z3=linkage(d1,'average');
z4=linkage(d1,'centroid');
z5=linkage(d1,'ward');
R=[cophenet(z1,d1),cophenet(z2,d1),cophenet(z3,d1),cophenet(z4,d1),cophenet(z5,d1)]
H= dendrogram(z3)
T=cluster(z3,4) %cluster 创建聚类,并作出谱系图
set(get(gca, 'Title'), 'String', '聚类分析-谱系聚类图');
k-평균 군집 분석 산점도
[a,b]=kmeans(x,4); %%分为4类输出
x1=x(find(a==1),:) %提取第1类里的样品
x2=x(find(a==2),:) %提取第2类里的样品
x3=x(find(a==3),:) %提取第3类里的样品
x4=x(find(a==4),:) %提取第3类里的样品
sd1=std(x1)
sd2=std(x2)
sd3=std(x3) % 分别计算第1类和第2类第3类的标准差
sd4=std(x4) % 分别计算第1类和第2类第3类的标准差
plot(x(a==1,1),x(a==1,2),'r.',x(a==2,1),x(a==2,2),'b.',x(a==3,1),x(a==3,2),'g.',x(a==4,1),x(a==4,2),'y.','MarkerSize',15) %作出聚类的散点图
title('k-means聚类分析散点图');
linkage函数
调用格式:Z=linkage(Y,‘method’)
输入值说明:Y为pdist函数返回的M*(M-1)/2个元素的行向量,用‘method’参数指定的算法计算系统聚类树。
method:可取值如下:
‘single’:最短距离法(默认);
‘complete’:最长距离法;
‘average’:未加权平均距离法;
‘weighted’: 加权平均法;
‘centroid’:质心距离法;
‘median’:加权质心距离法;
‘ward’:内平方距离法(最小方差算法)
返回值说明:Z为一个包含聚类树信息的(m-1)×3的矩阵,其中前两列为索引标识,表示哪两个序号的样本可以聚为同一类,第三列为这两个样本之间的距离。另外,除了M个样本以外,对于每次新产生的类,依次用M+1、M+2、…来标识