Matlab聚类分析/判别分析

目录

想查找相关内容也可在页面按ctrl+F搜索文字

一、聚类分析/判别分析

二、分类数的确定原则

三、Matlab系统聚类

四、K-均值聚类(K-means聚类)

五、Matlab判别分析

1.距离判别法

2.贝叶斯判别


一、聚类分析/判别分析

  • 聚类分析就是把没有分类信息的资料按相似程度归类,有探索性的含义在内。
  • 判别分析是从已知的分类中总结出规律,为判别新的观测所属类别提供依据。
  • K-means Cluster:对记录快速聚类,需先提供类别数。
  • Hierarchical Cluster:系统聚类,可对记录或变量进行全面的聚类。
  • Discriminant:提供全面的判别分析功能。

二、分类数的确定原则

Demirmen,1972年提出根据树形图来分类的四准则:

  • 准则1,任何类必须在邻近各类中是突出的,即各类重心之间距离必须大;
  • 准则2,各类包含的元素都不要过分多;
  • 准则3,分类的数目应该符合使用的目的;
  • 准则4,若采用几种不同的聚类方法,则在各自的聚类图上应发现相同的类。

三、Matlab系统聚类

  • D = pdist(X, DISTANCE) %用选项DISTANCE指示的方法求距离矩阵.
  • Z = linkage(D,METHOD) %对距离阵用指定的方法建立层次聚类结构.
  • dendrogram(Z) %绘制系统聚类图
  • [H,T]=dendrogram(Z,P) % Z为聚类结构数据,P为指定类别数
  • [H,T,OUTPERM] = dendrogram(...) %返回图句柄,各成员对应的类别,所有类别
  • Z = linkage(X,method,metric) %X也可是实际记录,metric为距离

示例:

X = rand(100,2);
Y = pdist(X,'euclidean');
Z = linkage(Y,'average');
%默认尽可能多类
subplot(1,2,1),dendrogram(Z)

%划分5类
subplot(1,2,2),dendrogram(Z,5)

Matlab聚类分析/判别分析_第1张图片

T=clusterdata(X,cutoff)

另有clusterdata函数,调用格式:T=clusterdata(X,cutoff)

等价于Y=pdist(X,’euclid’); Z=linkage(Y,’single’); T=cluster(Z,cutoff)

四、K-均值聚类(K-means聚类)

  • Idx=Kmeans(X,K) %K聚类数,X观测数据矩阵,Idx各点的聚类标号
  • [Idx,C]=Kmeans(X,K) % C: K*P的矩阵,存储K个聚类质心位置
  • [Idx,C,sumD]=Kmeans(X,K) %sumD: 存储类间所有点与该类质心点距离之和
  • [Idx,C,sumD,D]=Kmeans(X,K) %D: 存储每个点与所有质心的距离
  • […]=Kmeans(…,’Param1’,Val1,’Param2’,Val2,…) 其中的参数Param1、Param2等,主要可以设置为如下: 1. ‘Distance’(距离测度); 2. ‘Start’(初始质心位置选择方法); 3. ‘Replicates’(聚类重复次数) 整数

示例:

X = [randn(100,2)+ones(100,2);
randn(100,2)-ones(100,2)];
[idx,ctrs] = kmeans(X,2);  %分二类,返回类别标号,类心坐标
plot(X(idx==1,1),X(idx==1,2),'r.',X(idx==2,1),X(idx==2,2),'b.')
hold on
plot(ctrs(:,1),ctrs(:,2),'kx', ctrs(:,1),ctrs(:,2),'ko')

Matlab聚类分析/判别分析_第2张图片

五、Matlab判别分析

1.距离判别法

class=classify(sample,training,group,'type')

示例:

load fisheriris   %装入费歇尔的经典花萼尺寸、种类数据
SL = meas(:,1);SW=meas(:,2);group = species;
X=meas([4,54,124],1);Y=meas([4,54,124],2);
[C,err,P,logp,coeff] = classify([X Y],[SL SW], group,'linear');

2.贝叶斯判别

nb=NaiveBayes.fit(training, group)

cpre=predict(nb,test)  % test为待测试判别的数据

 

 

 

你可能感兴趣的:(Matlab)