任课教师签字:___________
课程作业
学 年 学 期:2017——2018学年第二学期 课 程 名 称:模式识别 作 业 名 称:作业六 学 生 姓 名: 学 号: 提 交 时 间:
一、问题重述
使用Iris数据进行以下分析,原始数据为3类,每类50个数据,每个样本为四维。
1、取原始数据中两维,图形显示不分类别的状态。
2、不分类别共150个数据混合,采用不同方法进行聚类研究:
1)分级聚类法:最初为150类,依据欧氏距离,最终分为3类,图形显示三类。
2)C-均值聚类法:不同的初始聚类中心,a)前三个,b)后三个,c)第1、51、101个,d)前50平均值、中间50平均值、后50平均值
计算不同方法获得的分类结果,最终分为3类,图形显示三类。 3)对比批量处理法和单样本修正法的结果。
二、方法原理
1、数据标准化
数据标准化有两个直接目的,一是消除量纲的影响,二是同一各特征的影响零均值处理的计算公式为:
x'xx
度。比较常用的标准化方法是零均值处理和单位方差处理。
单位方差处理的计算公式为:
1n(xijxi)2sin1i1 'xijxixijsi聚类准则可以评价聚类结果的好坏,误差平方和准则是常用的一种聚类准则。 误差平方和准则计算公式如下:
c2、聚类准则
Je||xmi||2,其中mii1xRi1nixRix
其中C代表聚类数,ni是第i类中的样本数。
Je取值越小,表明聚类结果越好。
计算误差平方和准则Je的程序如下: function output=Je_SquareError(classy_result) classy_n=length(classy_result);%元胞中元素个数 [~,classy_dimensions]=size(classy_result{1});%每个元素的维度 classy_mean=zeros(classy_n,classy_dimensions); Je=zeros(classy_n,1); for i=1:classy_n classy_mean(i,:)=mean(classy_result{i},1);%每个元素的均值 h=pdist2(classy_result{i},classy_mean(i,:));%每个点到均值点的距离 Je(i)=h'*h;%距离平方和 end output=sum(Je); 3、聚类算法
聚类算法有非迭代算法和迭代算法两种类型。
1)非迭代算法中常用的是分级聚类法,算法开始时将每条数据视为一级,每次循环依据最小距离合并一级,并用均值点作为新级的内容,直到级数减小到要求的分类数退出循环,实现聚类效果。
分级聚类法的算法流程图如下:
开始m条原始数据分类数nH=m,数据分成H级H<=nN寻找距离最近的两条数据Y两条数据合为一级用平均值作为新级的数据H=H-1n类数据结束
图1 分级聚类算法流程图
分级聚类法程序:
%分级聚类函数 %A是原始数据,a为期望的类别数 function output=Hierarchical_cluster(A,a) orginal_data=A; classy_n=a;%最终的分类数 classy_result=cell(classy_n,1);%最后的返回结果 [orginal_number,~]=size(orginal_data);%原数据数量,原数据维度 current_n=orginal_number;%当下的类别数 current_data=orginal_data;%当下的数据 current_data_No=cell(current_n,1); for i=1:orginal_number current_data_No{i}=i;%存放每个类别中的数据对应的原始数据中的序号 end while (current_n>classy_n) %寻找距离最近的两个级 pdist_diag=ones(1,current_n)*100000; pdist_data=squareform(pdist(current_data))+diag(pdist_diag);%距离 min_data=min(min(pdist_data)); [i_data,j_data]=find(pdist_data==min_data); mini_data=i_data(1);%mini_data,minj_data即为数据中相邻最近的两个数据 minj_data=j_data(1); %记录并合并最近两个点所在级中对应的原始数据中的序号 new_data_No=[current_data_No{mini_data} current_data_No{minj_data}]; %删除旧级,增加新级,%用新级代替一个旧级 current_data(mini_data,:)=(current_data(mini_data,:)+current_data(minj_data,:))/2; current_data_No{mini_data}=new_data_No; current_data(minj_data,:)=[];%删除一个旧级 current_data_No(minj_data)=[]; current_n=current_n-1;%减少一级 end for i=1:classy_n classy_result{i}=orginal_data(current_data_No{i},:); end output=classy_result;
2)迭代算法中常用的是C均值法,根据C个中心点一句最小距离法将数据分为C类,然后迭代计算中心点,重新进行分类……直到中心点不再发生变化,即完成聚类运算。
单样本处理和批量样本处理C均值聚类法的算法流程图如下:
开始开始m条r维原始数据分类数n初始中心选择方式b批处理方式cm条r维原始数据分类数n初始中心选择方式b批处理方式c根据b的取值选择初始中心Centern*r根据b的取值选择初始中心Centern*r中心点不发生变化Ni=1Y中心点不发生变化YYi>mNN基于中心点最近距离法对第i条数据进行归类基于中心点最近距离法对s所有数据进行归类计算新的中心点Centern*r计算新的中心点Centern*ri=i+1n类数据n类数据结束结束单样本修正法批处理修正法
图2 C均值聚类算法
C均值分类算法: %动态聚类法 %A是原始数据 %a为期望的类别数 %b是选择初始中心的方式, %c是选择处理方式,0代表批处理方式,1道标单样本修正方式 function output=Dynamical_cluster(A,a,b,c) orginal_data=A; classy_n=a;%最终的分类数 Center_methond=b; Train_methond=c; classy_result=cell(classy_n,1);%最后的返回结果 [orginal_number,orginal_imensions]=size(orginal_data);%原数据数量,原数据维度 Center=zeros(classy_n,orginal_imensions); %%%%%%%%%%%%%%%%%选取初始中心点,需要保证这三个点不一样 i=0; while(length(unique(Center,'rows')) 三、结果结论 根据上一个作业,选取特征三、四进行分类效果较好。对选取特征三、四的Iris数据进行聚类结果如下 1、不分类图像 Iris数据选取3、4两维,进行不分类图形展示21.510.5特征40-0.5-1-1.5-2-1.5-1-0.50特征30.511.52 图3 Iris数据特征3、4不分类展示 2、分级聚类结果 误差平方和准则Je=23.71932类别a类别b类别c 1.510.5特征40-0.5-1-1.5 -2-1.5-1-0.50特征30.511.52 图4 分级聚类结果 3、C均值聚类结果 1)选取后三个连续且互不相同的数据作为初始中心点聚类结果: C均值批处理聚类分类结果误差平方和准则Je=17.926721.510.50-0.5-1-1.5 -2类别a类别b类别c 21.510.50-0.5-1-1.5 -2类别a类别b类别cC均值单样本聚类分类结果误差平方和准则Je=17.9267 特征4-10特征312特征4-10特征312 图5 第一种初始中心点C均值聚类结果 2)选取后三个连续且互不相同的数据作为初始中心点聚类结果: C均值批处理聚类分类结果误差平方和准则Je=17.926721.510.50-0.5-1-1.5 -2类别a类别b类别c 21.510.50-0.5-1-1.5 -2C均值单样本聚类分类结果误差平方和准则Je=17.9267类别a类别b类别c 特征4-10特征312特征4-10特征312 图6第二种初始中心点C均值聚类结果 3)选取第1、51、151个数据作为初始中心点聚类结果: C均值批处理聚类分类结果误差平方和准则Je=17.926721.510.50-0.5-1-1.5 -2类别a类别b类别c 21.510.50-0.5-1-1.5 -2类别a类别b类别cC均值单样本聚类分类结果误差平方和准则Je=17.9267 特征4-10特征312特征4-10特征312 图7 第三种初始中心点C均值聚类结果 4)选取前50、中间50、后50平均值作为初始中心点,聚类结果如下: C均值批处理聚类分类结果误差平方和准则Je=17.92672类别a类别b类别c 2类别a类别b类别cC均值单样本聚类分类结果误差平方和准则Je=17.9267 1.51.5110.50.5特征40特征40-0.5-0.5-1-1-1.5 -2-10特征312-1.5 -2-10特征312图8 第四种初始中心点C均值聚类结果 表1各种聚类方法结果比较 初始中心选取 前三个连续且互不相同的点 后三个连续且互不相同的点 第1、51、151个点 前50、中50、后50平均点 C均值聚类法 批量处理 单样本处理 17.9267 17.9267 17.9267 17.9267 17.9267 17.9267 17.9267 17.9267 分级聚类 23.7193 观察以上所有数据,针对选取特征3、4的Iris数据有以下几点发现: (1)在分为3类的前提下,C均值聚类法的效果要优于分级聚类法; (2)对于C均值聚类,初始中心的选取以及中心点的计算方式(即批处理、单样本处理)是不会影响最终的聚类结果的; (3)在测试程序时发现,对于C均值批处理聚类法,初始中心点的选取时应该保证互不相同,否则无法成功的将数据分为C类,这是由批处理的C均值聚类算法特性所导致的。 如选取前标准化后的前三个点(-1.3368,-1.3086)、(-1.3368,-1.3086) 、(-1.3935,-1.3086),分类结果如下所示: 2C均值批处理聚类分类结果误差平方和准则Je=53.7849类别a类别b1.51.5 2C均值单样本聚类分类结果误差平方和准则Je=17.9267类别a类别b类别c 110.50.5特征40特征40-0.5-0.5-1-1-1.5 -2-10特征312-1.5 -2-10特征312图9 初始中心有相同点时C均值聚类结果 因篇幅问题不能全部显示,请点此查看更多更全内容