模式识别作业.docx

上传人:牧羊曲112 文档编号:3601124 上传时间:2023-03-14 格式:DOCX 页数:5 大小:37.91KB
返回 下载 相关 举报
模式识别作业.docx_第1页
第1页 / 共5页
模式识别作业.docx_第2页
第2页 / 共5页
模式识别作业.docx_第3页
第3页 / 共5页
模式识别作业.docx_第4页
第4页 / 共5页
模式识别作业.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《模式识别作业.docx》由会员分享,可在线阅读,更多相关《模式识别作业.docx(5页珍藏版)》请在三一办公上搜索。

1、模式识别作业 2.6给出K-均值算法的程序框图,编写程序,自选一组分别属于三类的三维模式样本,并对它们进行聚类分析。 迭代次数=1随机选取k个样本作为初始聚类中心聚类数目大于样本个数YN输入聚类数目k得到样本矩阵的大小开始输入样本矩阵绘制样本数据的散点图输入错误,要求重新输入k判断前后两次聚类中心是否变化NY计算各聚类中心的新向量值迭代次数+1输出迭代次数,聚类中心,聚类结果按最短距离原则分配各点计算各点到聚类中心的距离结束MATLAB程序代码 clear all; clc; data=input(请输入样本数据矩阵:); X=data(:,1); Y=data(:,2); figure(1)

2、; plot(X,Y,r*,LineWidth,3); axis(0 9 0 8) xlabel(x);ylabel(y); hold on; grid on; m=size(data,1); n=size(data,2); counter=0; k=input(请输入聚类数目:); if km disp(输入的聚类数目过大,请输入正确的k值); k=input(请输入聚类数目:); end M=cell(1,m); for i=1:k M1,i=zeros(1,n); end Mold=cell(1,m); for i=1:k Mold1,i=zeros(1,n); end %随机选取k个样

3、本作为初始聚类中心 %第一次聚类,使用初始聚类中心 p=randperm(m);%产生m个不同的随机数 for i=1:k M1,i=data(p(i),:); end while true counter=counter+1; disp(第); disp(counter); disp(次迭代); count=zeros(1,k); %初始化聚类C C=cell(1,k); for i=1:k C1,i=zeros(m,n); end %聚类 for i=1:m gap=zeros(1,k); for d=1:k for j=1:n gap(d)=gap(d)+(M1,d(j)-data(i,

4、j)2; end end y,l=min(sqrt(gap); count(l)=count(l)+1; C1,l(count(l),:)=data(i,:); end Mold=M; disp(聚类中心为:); for i=1:k disp(M1,i); end disp(聚类结果为:); for i=1:k disp(C1,i); end sumvar=0; for i=1:k E=0; disp(单个误差平方和为:); for j=1:count(i) for h=1:n E=E+(M1,i(h)-C1,i(j,h)2; end end disp(E); sumvar=sumvar+E;

5、 end disp(总体误差平方和为:); disp(sumvar); %计算新的聚类中心,更新M,并保存旧的聚类中心 for i=1:k M1,i=sum(C1,i)/count(i); end %检查前后两次聚类中心是否变化,若变化则继续迭代;否则算法停止; tally=0; for i=1:k if abs(Mold1,i-M1,i)0NY计算判别函数迭代次数=0校正增量系数=1开始输入两类样本数据及初始权向量值写成增广向量形式并进行规范化处理MATLAB程序代码 clear all; clc; 结束disp(感知器算法求解两类训练样本的判别函数); Data1=input(请输入第一类

6、样本数据:); Data2=input(请输入第二类样本数据:); W=input(请输入权向量初始值W(1)=); Expand=cat(1,Data1,Data2); ExpandData1=cat(2,Data1,ones(4,1); ExpandData2=cat(2,Data2.*-1,ones(4,1).*-1); ExpandData=cat(1,ExpandData1,ExpandData2); X=Expand(:,1); Y=Expand(:,2); Z=Expand(:,3); ro,co=size(ExpandData); Step=0; CountError=1; w

7、hile CountError0; CountError=0; for i=1:ro Temp=W*ExpandData(i,:); if Temp=0 W=W+ExpandData(i,:); disp(W) CounterError=CountError+1; end end Step=Step+1; end disp(W) figure(1) plot3(X,Y,Z,ks,LineWidth,2); grid on;hold on; xlabel(x);ylabel(y);zlabel(z); f=(x,y,z)W(1)*x+W(2)*y+W(3)*z+W(4); x,y,z=meshgrid(-1:.2:1,-1:.2:1,0:.2:1); v=f(x,y,z); h=patch(isosurface(x,y,z,v ); isonormals(x,y,z,v,h) set(h,FaceColor,r,EdgeColor,none);

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号