Iris数据简单分类文档格式.docx

上传人:b****5 文档编号:18836976 上传时间:2023-01-01 格式:DOCX 页数:12 大小:177.35KB
下载 相关 举报
Iris数据简单分类文档格式.docx_第1页
第1页 / 共12页
Iris数据简单分类文档格式.docx_第2页
第2页 / 共12页
Iris数据简单分类文档格式.docx_第3页
第3页 / 共12页
Iris数据简单分类文档格式.docx_第4页
第4页 / 共12页
Iris数据简单分类文档格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Iris数据简单分类文档格式.docx

《Iris数据简单分类文档格式.docx》由会员分享,可在线阅读,更多相关《Iris数据简单分类文档格式.docx(12页珍藏版)》请在冰豆网上搜索。

Iris数据简单分类文档格式.docx

最初为150类,依据欧氏距离,最终分为3类,图形显示三类。

2)C-均值聚类法:

不同的初始聚类中心,a)前三个,b)后三个,c)第1、51、101个,d)前50平均值、中间50平均值、后50平均值

计算不同方法获得的分类结果,最终分为3类,图形显示三类。

3)对比批量处理法和单样本修正法的结果。

二、方法原理

1、数据标准化

数据标准化有两个直接目的,一是消除量纲的影响,二是同一各特征的影响度。

比较常用的标准化方法是零均值处理和单位方差处理。

零均值处理的计算公式为:

单位方差处理的计算公式为:

2、聚类准则

聚类准则可以评价聚类结果的好坏,误差平方和准则是常用的一种聚类准则。

误差平方和准则计算公式如下:

,其中

其中C代表聚类数,ni是第i类中的样本数。

Je取值越小,表明聚类结果越好。

计算误差平方和准则Je的程序如下:

functionoutput=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);

fori=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)非迭代算法中常用的是分级聚类法,算法开始时将每条数据视为一级,每次循环依据最小距离合并一级,并用均值点作为新级的内容,直到级数减小到要求的分类数退出循环,实现聚类效果。

分级聚类法的算法流程图如下:

图1分级聚类算法流程图

分级聚类法程序:

%分级聚类函数

%A是原始数据,a为期望的类别数

functionoutput=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);

orginal_number

current_data_No{i}=i;

%存放每个类别中的数据对应的原始数据中的序号

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;

%减少一级

classy_result{i}=orginal_data(current_data_No{i},:

);

output=classy_result;

2)迭代算法中常用的是C均值法,根据C个中心点一句最小距离法将数据分为C类,然后迭代计算中心点,重新进行分类……直到中心点不再发生变化,即完成聚类运算。

单样本处理和批量样本处理C均值聚类法的算法流程图如下:

图2C均值聚类算法

C均值分类算法:

%动态聚类法

%A是原始数据

%a为期望的类别数

%b是选择初始中心的方式,

%c是选择处理方式,0代表批处理方式,1道标单样本修正方式

functionoutput=Dynamical_cluster(A,a,b,c)

Center_methond=b;

Train_methond=c;

[orginal_number,orginal_imensions]=size(orginal_data);

Center=zeros(classy_n,orginal_imensions);

%%%%%%%%%%%%%%%%%选取初始中心点,需要保证这三个点不一样

i=0;

while(length(unique(Center,'

rows'

))<

ifCenter_methond==0%数据前n个连续不同的点作为初始中心点

i=i+1;

Center=orginal_data(i:

classy_n+i-1,:

elseifCenter_methond==1%数据后n个连续不同的点作为初始中心点

Center=orginal_data(orginal_number-classy_n+1-i:

orginal_number-i,:

elseifCenter_methond==2%数据第1+i、51+i、101+i个点作为中心点,i=0、1、2...

Center(1,:

)=orginal_data(1+i,:

Center(2,:

)=orginal_data(51+i,:

Center(3,:

)=orginal_data(101+i,:

elseifCenter_methond==3%数据随机n个不同的点作为初始中心点

orginal_data_rand=randperm(orginal_number);

Center=orginal_data(orginal_data_rand(1:

classy_n),:

elseifCenter_methond==4%数据前50,中50、后50平均点作为中心点

)=mean(orginal_data(1:

50,:

),1);

)=mean(orginal_data(51:

100,:

)=mean(orginal_data(101:

150,:

elseifCenter_methond==5%数据随机分为n类,n类的中心作为初始中心点

fori=0:

classy_n-1Center(i+1,:

)=mean(orginal_data(orginal_data_rand(i*fix(orginal_number/classy_n)+1:

(i+1)*fix(orginal_number/classy_n)),:

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%分类

flag=1;

class_ever_last=zeros(orginal_number,1);

class_ever=zeros(orginal_number,1);

while(flag==1)

ifTrain_methond==0%批量修正法

[~,class_ever]=min(pdist2(orginal_data,Center),[],2);

%计算最近的均值点

fori=1:

Center(i,:

)=mean(orginal_data(class_ever==i,:

%计算新的均值点

else%单样本修正法

[~,class_ever(i)]=min(pdist2(orginal_data(i,:

),Center));

%归属类别

ifclass_ever_last(i)~=class_ever(i)%这个点类别发生改变

forj=1:

iffind(class_ever==j)>

0%计算新的均值点

Center(j,:

)=mean(orginal_data(class_ever==j,:

%判断中心点有无变化

n_flag=length(nonzeros(class_ever_last-class_ever));

ifn_flag>

class_ever_last=class_ever;

else

flag=0;

%中心点不再变化

classy_result{i}=orginal_data(class_ever==i,:

三、结果结论

根据上一个作业,选取特征三、四进行分类效果较好。

对选取特征三、四的Iris数据进行聚类结果如下

1、不分类图像

图3Iris数据特征3、4不分类展示

2、分级聚类结果

图4分级聚类结果

3、C均值聚类结果

1)选取后三个连续且互不相同的数据作为初始中心点聚类结果:

图5第一种初始中心点C均值聚类结果

2)选取后三个连续且互不相同的数据作为初始中心点聚类结果:

图6第二种初始中心点C均值聚类结果

3)选取第1、51、151个数据作为初始中心点聚类结果:

图7第三种初始中心点C均值聚类结果

4)选取前50、中间50、后50平均值作为初始中心点,聚类结果如下:

图8第四种初始中心点C均值聚类结果

表1各种聚类方法结果比较

初始中心选取

C均值聚类法

分级聚类

批量处理

单样本处理

前三个连续且互不相同的点

17.9267

23.7193

后三个连续且互不相同的点

第1、51、151个点

前50、中50、后50平均点

观察以上所有数据,针对选取特征3、4的Iris数据有以下几点发现:

(1)在分为3类的前提下,C均值聚类法的效果要优于分级聚类法;

(2)对于C均值聚类,初始中心的选取以及中心点的计算方式(即批处理、单样本处理)是不会影响最终的聚类结果的;

(3)在测试程序时发现,对于C均值批处理聚类法,初始中心点的选取时应该保证互不相同,否则无法成功的将数据分为C类,这是由批处理的C均值聚类算法特性所导致的。

如选取前标准化后的前三个点(-1.3368,-1.3086)、(-1.3368,-1.3086)、(-1.3935,-1.3086),分类结果如下所示:

图9初始中心有相同点时C均值聚类结果

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1