k均值算法 编程实验

k均值算法 编程实验

ID:14274462

大小:139.00 KB

页数:10页

时间:2018-07-27

k均值算法  编程实验_第1页
k均值算法  编程实验_第2页
k均值算法  编程实验_第3页
k均值算法  编程实验_第4页
k均值算法  编程实验_第5页
资源描述:

《k均值算法 编程实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、模式识别报告实验2学生姓名:刘凯班学号:075114指导老师:马丽实验二:运用Kmean算法对无分类数据进行分类一、核心算法描述:本算法可以放在一个函数中,此函数形参为待分类的点集P(5*N矩阵)和类别数k,返回值为已分类的点集Classified_P(5*N矩阵)。1.在0到N(所有点数)之间任取k个值;2.创建类心点集Z(4*k矩阵),依次把k个值对应的点的前四行信息赋给Z,这样Z就存储了k个类心的信息;3.计算距离:采用k*N矩阵D存储P中每一点到各个类心的距离,此距离用公式可以表示为,D(i,j)=((P(1,j)-Z(1,i))^2+(P(2

2、,j)-Z(2,i))^2+(P(3,j)-Z(3,i))^2+(P(4,j)-Z(4,i))^2)^(1/2);4.分类:用k*N矩阵CL存放分类信息,CL初始值设为零,在D中逐列求最小值并记录其行号r,设当前属于c列,则r就是c点的类别号,将c填入CL(r,c)中,将r写进P(5,c)表征第c点属于r类;5.根据CL中的信息,检索每一行,求出所有非零列的平均坐标值并记录其列数m,具体的,逐行扫描,发现非零元素时就使m+1,同时根据当前CL中的非零值作为列号去索引P中对应的点,将其前四行信息分别分开累加,最后CL每一行的总和再除以m即得到新坐标。6.

3、判断新坐标与旧的类心坐标是否完全一致,若一致则分类完毕;否则需更新Z,然后再依次更新D、CL、P;7.重复5,6过程,直到新类心与旧类心完全一致或者设置迭代次数repeat的值以完成分类;8.将P赋给Classified_P.源程序:1.待调用函数:function[Z,CL,Classified_P]=Kmean(P,k)%参数说明:P为5*N矩阵,每一列对应一个点的两个波段值及所属类别号%k为Kmean算法参数%Z为4行k列矩阵,存放k个类心坐标%CL为k*N矩阵,作为分类后的分类矩阵,每一行代表一个类别%每一元素值就是该点对应序号%这样通过CL矩

4、阵可以方便的看到每一类中有哪些%序号的点%Classified_P为5*N矩阵,在P的基础上多加了每一点实际的类别号%存放在对应列的第5行Z1=zeros(1,k);N=length(P);%取第一行长度N,即所有点数%实际上这个地方length(P(1,:))也是可以的,%因为本函数本来就是只返回总列数q=N*rand(1,10*k);%产生10k个0到N之间的随机数L=0;fori=1:10*kC=ceil(q(i));%取整的1到N之间的自然数temp=0;%每次选一个点,对其初始化forj=1:kifC==Z1(j)temp=temp+1;%用

5、temp的值来表示所选点序号是重复次数endendiftemp==0%表明没有重复L=L+1;ifL>=1&L<=kZ1(1,L)=C;%用Z1矩阵存放初始k个类心序号endendifL>=kbreak;%提前结束循环endend%至此已得到k个类心序号Z=zeros(4,k);%用来存放k个类心的坐标fori=1:kifZ1(i)>0forj=1:4Z(j,i)=P(j,Z1(i));%以在Z1矩阵元素的值作为序号去索引end%P中对应的点endendd=zeros(1,4);%用于计算距离时存放各维差的平方值D=zeros(k,N);%作为距离矩阵

6、,D用来存放所有点到每一个类心距离fori=1:kforj=1:Nforh=1:4d(h)=(P(h,j)-Z(h,i))^2;endD(i,j)=(sum(d,2))^(1/2);%第j点到i类心距离endend%归类CL=zeros(k,N);%分类矩阵,每一行作为一类%元素值就是对应点的序号%%如2行4列为4,表明序号4的点属于2类%fori=1:N%%[a,b]=min(D(:,i));%a为i列最小值,b为其行序号%%CL(b,i)=i;%把i点序号i填入CL矩阵对应类别中%P(5,i)=b;%把i点对应类别号填入P中i列第5行%%end%以

7、下这段代码作用完全等同于上7行fori=1:NT=0;forj=1:kifD(j,i)==min(D(:,i))T=T+1;%避免重复CL(j,i)=i;%把的序号填入CL矩阵对应类别中P(5,i)=j;%把i点对应类别号填入P中i列第三行endifT==1break;%避免重复endendendClassified_P=P;tag=0;repeat=100;%设置迭代次数上限whiletag0%只有大于零的元素值

8、才是%对应于P矩阵中的点的序号m=m+1;%标识每一类中实际点数forh=1:4Coordin

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。