首页 贝叶斯_fisher判别法

贝叶斯_fisher判别法

举报
开通vip

贝叶斯_fisher判别法贝叶斯_fisher判别法 距离判别法和Bayes判别法 [color=black][size=3]距离判别法和Bayes判别法是判别分析中常用的两类判别法。多元统计书上一般都有介绍。简单说就是[font=MS Shell Dlg]判别给定的样本属于哪一类的。比方说一堆样本,分好几类,样本有n个属性。把这堆样本输入程序训练好后,程序就可以判别新的样本属于哪一类了。[/font]我把它们做成了一个简单的界面,大家可以按界面提示操作下。为了方便我准备了一些数据,见附件。[font=MS Shell Dlg]trai...

贝叶斯_fisher判别法
贝叶斯_fisher判别法 距离判别法和Bayes判别法 [color=black][size=3]距离判别法和Bayes判别法是判别分析中常用的两类判别法。多元统计书上一般都有介绍。简单说就是[font=MS Shell Dlg]判别给定的样本属于哪一类的。比方说一堆样本,分好几类,样本有n个属性。把这堆样本输入程序训练好后,程序就可以判别新的样本属于哪一类了。[/font]我把它们做成了一个简单的界面,大家可以按界面提示操作下。为了方便我准备了一些数据,见附件。[font=MS Shell Dlg]train是训练样本(判别准备前用的),test是测试样本,即新数据,用来判别新样本中每一个属于哪一类的。这里属性个数n=3。实际使用时,n可以不局限于3。训练样本只要按照附件中的格式(即第一列为类名,其余列为属性)存为xls文件即可。测试样本直接就是由属性列组成的,每一行表示一个样本。[/font][/size][/color] [font=MS Shell Dlg][size=3]下面是代码(注释比较详细,用nested function写回调函数可以供GUI初学者借鉴):[/size][/font] [font=MS Shell Dlg][size=3][code] function DiscriminantMethods fig=figure('defaultuicontrolunits','normalized','name','各类判别方法比较 ','numbertitle','off','menubar','none');%主界面,返回主界面句柄fig UiButtonGroupH = uibuttongroup('Position',[0.55 0.08 0.40 0.85],'title','各判别方法','fontsize',12,'bordertype','etchedout');%群组对象,并返回句柄 DistanceH = uicontrol('Style','Radio','String','距离判别法','fontsize',12,'pos',[0.05 0.73 0.9 0.15],'parent',UiButtonGroupH);%距离判别法的选项 BayesH = uicontrol('Style','Radio','String','Bayes判别法','fontsize',12,'pos',[0.05 0.52 0.9 0.15],'parent',UiButtonGroupH);%Bayes判别法的选项 FisherH = uicontrol('Style','Radio','String','Fisher判别法','fontsize',12,'pos',[0.05 0.31 0.9 0.15],'parent',UiButtonGroupH);%Fisher判别法的选项 %下面几行建立相关按钮控件。各菜单以及按钮点击时候的功能函数(回调函数写在下面) PrepareH=uicontrol(fig,'style','pushbutton','Pos',[0.15,0.68,0.2,0.08],'string','判别前准备','fontsize',12,'callback',@Prepare); StartDiscriminantH=uicontrol(fig,'style','pushbutton','Pos',[0.15,0.38,0.2,0.08],'string','开始判别','fontsize',12,'callback',@StartDiscriminant); %================================================= %function:Prepare,判别前准备按钮的功能函数(回调函数) %================================================= function Prepare(hObject,eventdata) [filename, pathname, flag] = uigetfile( '*.xls','当前选定的判别法的训练样本数据(*.xls)','*.xls');%弹出提示对话框 if ~flag return;%flag为0,用户取消选择,返回; end [feature,class]=xlsread([pathname,filename]);%读入训练样本数据 Uclass=unique(class);%得出训练样本的类别信息(即分属于哪几类) lUc=length(Uclass);%类别数目 Cfeature=cell(lUc,1); for k=1:lUc Cfeature{k}=feature(strcmp(class,Uclass{k}),:);%训练样本中每一类特征归到一起 end WhichDisc=get(findobj(UiButtonGroupH,'style','radio','value',1),'string');%当前界面中选择的是哪种判别法 switch WhichDisc case '距离判别法' MeanCfeature=zeros(lUc,size(Cfeature{1},2));%用来存储每一类的各特征平均值 InvSigma=cell(lUc,1);%用来存储每一类的协方差矩阵的逆 for ii=1:lUc MeanCfeature(ii,:)=mean(Cfeature{ii});%得到每一类的各特征平均值 InvSigma{ii}=inv(cov(Cfeature{ii}));%得到每一类的协方差矩阵的逆 end SampleInfo.MeanCfeature=MeanCfeature; SampleInfo.InvSigma=InvSigma; SampleInfo.Uclass=Uclass; setappdata(DistanceH,'SampleInfo',SampleInfo); case 'Bayes判别法' case 'Fisher判别法' otherwise end h=msgbox('准备完毕,请点击开始判别进行测试~');%弹出对话框 uiwait(h);%等待用户确认后再运行程序 end %======================================================= ===== %function:StartDiscriminant,开始判别按钮的功能函数(回调函数) %======================================================= ===== function StartDiscriminant(hObject,eventdata) [filename, pathname, flag] = uigetfile( '*.xls','请导入测试样本数据(*.xls)','*.xls');%弹出提示对话框 if ~flag return;%flag为0,用户取消选择,返回; end feature=xlsread([pathname,filename]); lf=size(feature,1); WhichDisc=get(findobj(UiButtonGroupH,'style','radio','value',1),'string');%当前界面中选择的是哪种判别法 switch WhichDisc case '距离判别法' SampleInfo=getappdata(DistanceH,'SampleInfo');%获取判别前准备完成时存储的用于判别的信息 if isempty(SampleInfo) %如果SampleInfo为空值 h=msgbox('距离判别法还没有判别前准备,请点击判别前准备按钮做相应准备~'); uiwait(h); return; end lUc=length(SampleInfo.Uclass);%类别数目 Dist=zeros(lf,lUc);%存储每个样本到每个类的距离,行对应样本,列对应类 for k=1:lf for kk=1:lUc Dist(k,kk) = (feature(k,:)-SampleInfo.MeanCfeature(kk,:)) * SampleInfo.InvSigma{kk} * (feature(k,:)-SampleInfo.MeanCfeature(kk,:))'; end %计算每个样本到每个类的距离 end [md,ClassNum]=min(Dist,[],2); Class=SampleInfo.Uclass(ClassNum); uiwait(helpdlg('当前样本已用距离判别法判别完毕,请按提示保存结果','距离判别法判别')); [file,path] = uiputfile([filename,'距离判别法判别结果.xls'],'保存当前判别结果为:'); if ~file uiwait(msgbox('用户放弃保存~')); return; end xlswrite([path,file],Class); case 'Bayes判别法' case 'Fisher判别法' otherwise end end end [/code][/size][/font] [attach]160749[/attach][attach]160750[/attach]
本文档为【贝叶斯_fisher判别法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_105949
暂无简介~
格式:doc
大小:20KB
软件:Word
页数:0
分类:互联网
上传时间:2017-10-17
浏览量:29