Matlab 통계 분석 - 클러스터링 알고리즘 모델

통계 분석 - 클러스터링 알고리즘 모델

거리 분석

여기에 이미지 설명 삽입

데이터 표준화


유클리드 거리는 차원과 관련이 있기 때문에 표준화 등의 데이터 전처리가 필요한 경우가 있습니다 .
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-평균 클러스터링의 알고리즘 흐름:

  1. 분할할 클러스터 수(클래스 수)의 K 값을 지정합니다.
  2. K개의 데이터 개체를 초기 클러스터 중심으로 무작위로 선택합니다(반드시 샘플 포인트는 아님).
  3. 나머지 데이터 개체 각각에서 K개의 초기 클러스터 중심까지의 거리를 계산하고 가장 가까운 중심이 있는 클러스터로 데이터 개체를 분류합니다.
  4. 새 클래스를 조정하고 새 클래스의 중심을 다시 계산합니다.
  5. 3단계와 4단계를 반복하여 중심이 수렴되는지(변경되지 않음) 확인합니다. 수렴하거나 반복 횟수에 도달하면 루프를 중지합니다.
  6. 마치다.

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 구현을 연구하기 위한 구현 단계는 대략 다음과 같습니다.

  1. 데이터 매트릭스를 입력하고 행과 열의 실제 의미에 주의하십시오.
  2. 샘플 간 거리 계산(행? 열?)
    유클리드 거리: d=pdist(A) % A의 각 행 간 거리 계산에 주의하십시오.
    절대 거리: d= pdist(A,'cityblock'),
    Mingshi 거리: d=pdist(A,'minkowski',r), % r은 특정 실수로 채워져야 함, 분산 가중 거리
    : d= pdist(A,'seuclid'),
    Mahalanobis 거리: d= pdist(A,' mahal ');
    참고: 위 명령의 출력은 행 벡터입니다.
  3. 클러스터링을 위해 다른 클래스 간 거리를 선택하십시오.
  4. 가계 클러스터 맵 만들기
  5. 카테고리 수에 따라 클러스터링 결과 출력
설문조사 데이터를 활용하여 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、…来标识

추천

출처blog.csdn.net/weixin_43599390/article/details/131358191