聚类分析模式识别.doc

上传人:wj 文档编号:7401444 上传时间:2023-05-11 格式:DOC 页数:6 大小:67KB
下载 相关 举报
聚类分析模式识别.doc_第1页
第1页 / 共6页
聚类分析模式识别.doc_第2页
第2页 / 共6页
聚类分析模式识别.doc_第3页
第3页 / 共6页
聚类分析模式识别.doc_第4页
第4页 / 共6页
聚类分析模式识别.doc_第5页
第5页 / 共6页
聚类分析模式识别.doc_第6页
第6页 / 共6页
亲,该文档总共6页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

聚类分析模式识别.doc

《聚类分析模式识别.doc》由会员分享,可在线阅读,更多相关《聚类分析模式识别.doc(6页珍藏版)》请在冰点文库上搜索。

聚类分析模式识别.doc

聚类分析实验

一、实验目的

加深对K均值聚类分析算法的理解,掌握K均值聚类分析分类器的设计方法。

二、实验内容

根据实验数据设计K均值聚类分析分类器,实验数据采用遥感彩色图像,以图像的所有象素为样本集,每一象素点的R、G、B值作为其特征向量。

1)选择合适的类别数K和初始聚类中心。

2)选择距离测度。

3)设计迭代中止条件,或人为设定迭代次数。

4)循环迭代结束时,各类的所有象素其R、G、B值用各类中心的R、G、B值表示,画出分类结果图。

5)分析不同初始聚类中心和迭代条件对分类效果的影响。

三、实验思路

利用K均值算法的思路,根据其步骤,将实验分为以下几步:

1、本实验中选定K=5,即选K个聚类中心,任选K个样本为初始聚类中心;

2、分别计算每个样本到各聚类中心的距离,按照最小距离原则,将全部样本分配到K个聚类中;

3、利用下式计算重新分类后的各聚类中心

j=(1,2,3)

4、比较新的聚类中心和旧的聚类中心之间的距离,如果它们的距离小于等于0.01,则认为两聚类中心相等,跳出迭代,否则转2,进行迭代,直至达到最大迭代数;

5、分类结束,将所有样本分成K类,各类值都与其对应聚类中心值相等。

画出图像,算法结束。

四、实验结果

最后的聚类中心和一共迭代次数为:

五、附录

closeall;clearall;clc;

%读取图像

f=imread('D:

\model.bmp');

figure;

imshow(f);

title('未聚类前图像')

S=size(f);%得到图像矩阵,发现它是247*203*3矩阵

hd=double(f);

r=hd(:

:

1);%把三原色分开,红

g=hd(:

:

2);%绿

b=hd(:

:

3);%蓝

%任选K个初始聚类中心

z(1,:

)=[r(50,40),g(50,40),b(50,40)];

z(2,:

)=[r(200,40),g(200,40),b(200,40)];

z(3,:

)=[r(50,160),g(50,160),b(50,160)];

z(4,:

)=[r(200,160),g(200,160),b(200,160)];

z(5,:

)=[r(120,100),g(120,100),b(120,100)];

%按最小距离原则,将全部样本分配到K个聚类中

form=1:

100%最大失代次数

%x1=[];x2=[];x3=[];x4=[];x5=[];

zz=zeros(5,3);

k=zeros(5,1);

forrr=1:

S(1,1);

forll=1:

S(1,2);

%计算样本到各聚类中心的距离

fornn=1:

5

dt(nn,1)=([hd(rr,ll,1),hd(rr,ll,2),hd(rr,ll,3)]-z(nn,:

))*([hd(rr,ll,1),hd(rr,ll,2),hd(rr,ll,3)]-z(nn,:

))';

end

[yy,xx]=min(dt);%得到样本距离其中一个中心距离最小

k(xx,1)=k(xx,1)+1;

zz(xx,:

)=zz(xx,:

)+[r(rr,ll),g(rr,ll),b(rr,ll)];

zb(xx,k(xx,:

),:

)=[rr,ll];%标记坐标号

end

end

forn=1:

5

zt(n,:

)=zz(n,:

)/k(n,1);%重新计算各聚类中心

dz(n)=sqrt((zt(n,:

)-z(n,:

))*(zt(n,:

)-z(n,:

))');%计算新旧聚类中心的距离

z(n,:

)=zt(n,:

);%聚类中心更新

end

ifmax(dz)<=0.01%如果新老聚类中心的距离<=0.01则认为相等

break;

end

end

%所有样本的值都与其聚类中心的值相等

forn=1:

k(1,1)

hd(zb(1,n,1),zb(1,n,2),1)=z(1,1);

hd(zb(1,n,1),zb(1,n,2),2)=z(1,2);

hd(zb(1,n,1),zb(1,n,2),3)=z(1,3);

end

forn=1:

k(2,1)

hd(zb(2,n,1),zb(2,n,2),1)=z(2,1);

hd(zb(2,n,1),zb(2,n,2),2)=z(2,2);

hd(zb(2,n,1),zb(2,n,2),3)=z(2,3);

end

forn=1:

k(3,1)

hd(zb(3,n,1),zb(3,n,2),1)=z(3,1);

hd(zb(3,n,1),zb(3,n,2),2)=z(3,2);

hd(zb(3,n,1),zb(3,n,2),3)=z(3,3);

end

forn=1:

k(4,1)

hd(zb(4,n,1),zb(4,n,2),1)=z(4,1);

hd(zb(4,n,1),zb(4,n,2),2)=z(4,2);

hd(zb(4,n,1),zb(4,n,2),3)=z(4,3);

end

forn=1:

k(5,1)

hd(zb(5,n,1),zb(5,n,2),1)=z(5,1);

hd(zb(5,n,1),zb(5,n,2),2)=z(5,2);

hd(zb(5,n,1),zb(5,n,2),3)=z(5,3);

end

fn=uint8(hd);

figure;

imshow(fn);

title('K均值聚类后的图像');

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

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2