基于Fisher判别分析的贝叶斯分类器
- 格式:pdf
- 大小:2.14 MB
- 文档页数:3
F i s h e r准则线性分类器设计内部编号:(YUUT-TBBY-MMUT-URRUY-UOOY-DBUYI-0128)一 、基于F i s h e r 准则线性分类器设计1、 实验内容: 已知有两类数据1ω和2ω二者的概率已知1)(ωp =,2)(ωp =。
1ω中数据点的坐标对应一一如下:数据:x =y =z =2ω数据点的对应的三维坐标为x2 =y2 =z2 =数据的样本点分布如下图:1)请把数据作为样本,根据Fisher选择投影方向W的原则,使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求,求出评价投影方向W的函数,并在图形表示出来。
取极大值的*w。
用matlab完并在实验报告中表示出来,并求使)J(wF成Fisher线性分类器的设计,程序的语句要求有注释。
2)根据上述的结果并判断(1,,),,,,,,,,,(,,),属于哪个类别,并画出数据分类相应的结果图,要求画出其在W上的投影。
3)回答如下问题,分析一下W的比例因子对于Fisher判别函数没有影响的原因。
2、实验代码x1 =[];x2 =[];x3 =[];%将x1、x2、x3变为行向量x1=x1(:);x2=x2(:);x3=x3(:);%计算第一类的样本均值向量m1m1(1)=mean(x1);m1(2)=mean(x2);m1(3)=mean(x3);%计算第一类样本类内离散度矩阵S1S1=zeros(3,3);for i=1:36S1=S1+[-m1(1)+x1(i) -m1(2)+x2(i) -m1(3)+x3(i)]'*[-m1(1)+x1(i) -m1(2)+x2(i) -m1(3)+x3(i)];end%w2的数据点坐标x4 =[];x5 =[];x6 =[];x4=x4(:);x5=x5(:);x6=x6(:);%计算第二类的样本均值向量m2m2(1)=mean(x4);m2(2)=mean(x5);m2(3)=mean(x6);%计算第二类样本类内离散度矩阵S2S2=zeros(3,3);for i=1:36S2=S2+[-m2(1)+x4(i) -m2(2)+x5(i) -m2(3)+x6(i)]'*[-m2(1)+x4(i) -m2(2)+x5(i) -m2(3)+x6(i)];end%总类内离散度矩阵SwSw=zeros(3,3);Sw=S1+S2;%样本类间离散度矩阵SbSb=zeros(3,3);Sb=(m1-m2)'*(m1-m2);%最优解WW=Sw^-1*(m1-m2)'%将W变为单位向量以方便计算投影W=W/sqrt(sum(W.^2));%计算一维Y空间中的各类样本均值M1及M2for i=1:36y(i)=W'*[x1(i) x2(i) x3(i)]';endM1=mean(y);for i=1:36y(i)=W'*[x4(i) x5(i) x6(i)]';endM2=mean(y);%利用当P(w1)与P(w2)已知时的公式计算W0p1=;p2=;W0=-(M1+M2)/2+(log(p2/p1))/(36+36-2);%计算将样本投影到最佳方向上以后的新坐标X1=[x1*W(1)+x2*W(2)+x3*W(3)]';X2=[x4*W(1)+x5*W(2)+x6*W(3)]'; %得到投影长度XX1=[W(1)*X1;W(2)*X1;W(3)*X1];XX2=[W(1)*X2;W(2)*X2;W(3)*X2]; %得到新坐标%绘制样本点figure(1);plot3(x1,x2,x3,'r*'); %第一类hold onplot3(x4,x5,x6,'gp') ; %第二类legend('第一类点','第二类点');title('Fisher线性判别曲线');W1=5*W;%画出最佳方向line([-W1(1),W1(1)],[-W1(2),W1(2)],[-W1(3),W1(3)],'color','g'); %判别已给点的分类a1=[1,,]';a2=[,,]';a3=[,,]';a4=[,,]';a5=[,,]';A=[a1 a2 a3 a4 a5];n=size(A,2);%下面代码在改变样本时可不修改%绘制待测数据投影到最佳方向上的点for k=1:nA1=A(:,k)'*W;A11=W*A1;%得到待测数据投影y=W'*A(:,k)+W0; %计算后与0相比以判断类别,大于0为第一类,小于0为第二类if y>0plot3(A(1,k),A(2,k),A(3,k),'ro'); %点为"rp"对应第一类plot3(A11(1),A11(2),A11(3),'ro'); %投影为"r+"对应ro类elseplot3(A(1,k),A(2,k),A(3,k),'ch'); %点为"bh"对应ch类plot3(A11(1),A11(2),A11(3),'ch'); %投影为"b*"对应ch类endend%画出最佳方向line([-W1(1),W1(1)],[-W1(2),W1(2)],[-W1(3),W1(3)],'color','m');view([,30]);axis([-2,3,-1,3,,]);grid onhold off3、实验结果根据求出最佳投影方向,然后按照此方向,将待测数据进行投影。
一种基于加权核Fisher准则的朴素贝叶斯分类器
雷瑜;杨慧中
【期刊名称】《江南大学学报(自然科学版)》
【年(卷),期】2013(012)005
【摘要】利用加权核Fisher准则,给出一种朴素贝叶斯分类器的改进算法.该算法通过寻找使类与类最大分离的最优投影矩阵,将样本数据进行投影变换,再利用朴素贝叶斯分类器对新样本进行分类.将该方法应用于双酚A生产过程在线监测数据集的分类中,仿真结果表明,相比于单纯朴素贝叶斯分类器,该分类算法具有更好的分类性能.
【总页数】5页(P510-514)
【作者】雷瑜;杨慧中
【作者单位】江南大学教育部轻工过程先进控制重点实验室,江苏无锡214122;江南大学教育部轻工过程先进控制重点实验室,江苏无锡214122
【正文语种】中文
【中图分类】TP274
【相关文献】
1.一种基于粗糙集的特征加权朴素贝叶斯分类器 [J], 王国才;张聪
2.一种基于粗糙集的特征加权朴素贝叶斯分类器 [J], 王国才;张聪
3.基于加权Fisher准则的线性鉴别分析及人脸识别 [J], 郭娟;林冬;戚文芽
4.一种选择性的加权朴素贝叶斯分类器 [J], 王峻;刘淮生
5.基于加权核Fisher准则特征提取的多模型建模方法(英文) [J], 吕业;杨慧中
因版权原因,仅展示原文概要,查看原文内容请购买。
距离判别法和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 DiscriminantMethodsfig=figure('defaultuicontrolunits','normalized','name','各类判别方法比较','numbertitle','off','menubar','none');%主界面,返回主界面句柄figUiButtonGroupH = 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判别法的选项%下面几行建立相关按钮控件。
典则判别函数和fisher判别函数
典则判别函数和Fisher判别函数是模式分类中常用的两种算法。
它们都是通过选择合适的决策边界来对数据进行分类。
但是它们的实
现方式和应用场景有所不同。
典则判别函数是一种基于贝叶斯分类规则的判别函数。
它将数据
集分为多个类别,并计算每个类别的先验概率。
在观察到新的数据时,典则判别函数将计算各类别的后验概率并选择概率最大的类别作为分
类结果。
这种算法相对简单,但需要事先知道每个类别的先验概率。
Fisher判别函数则是一种基于判别分析的算法,它用于确定分类数据的最佳线性投影。
这个投影可以最大化类别之间的差异性,同时
最小化类别内部的差异性。
因此,Fisher判别函数在处理大量特征或
类别未知时效果更好。
它可以用于二分类和多分类问题,并且可以通
过聚类算法来确定类别数量。
总体而言,典则判别函数是一种简单而直接的方法,而Fisher
判别函数则更适合于处理高维数据和未知类别的情况。
但无论是哪种
算法,在实际应用中都需要根据具体的问题选择合适的算法,并根据
数据集进行调整。
Fisher分类器设计班级:自092 姓名:刘昌元学号:099064370 一、实验目的:1:根据fisher准则设计线性分类器2:由fisher分类器训练样本数据3:由fisher分类器测试样本观察出错率并与贝叶斯分类器的出错率比较判断两种分类器的性能优劣4:将测试数据和决策面画在一张图上直观显示是三、实验所用函数:类均值向量:∑=∈ixj j i x N M χ1类内离散度矩阵:Ti j i ixj j iM x M x S ))((--∑∈=χ总类内离散度矩阵:21S S S w +=类间离散度矩阵:T b M M M M S ))((2121--= 最有投影方向:)(211*M M S W w -=-决策函数:0)(w x w x G T +=阈值:)(21210M w M w w T T+-= 四、实验结果:1:得到参数:最有投影向量和阈值2:利用分类器输入身高和体重数据得到性别分类(实验结果如下)w=[ 0.0012; 0.0003] threshold =0.2318classify(165,56) 结果为“女” classify(178,70) 结果为“男”3:fisher准则分类器的出错率统计:测试test1:实际个数分类个数出错率男生84.0000 31.0000 0.6310女生40.0000 93.0000 1.3250测试test2:4:bayes分类器测试出错统计:测试test1:测试test2:结论:很显然bayes分类器比fisher分类器准确率高的多。
4:分类面决策图:五、程序:程序1:求最有投影方向和阈值%程序功能:应用fisher分类方法,使用训练数据获得阈值和最佳变换向量(投影方向)% function fisher(boys,girls) %调用男生和女生的训练样本数据%A=boys.';B=girls.';[k1,l1]=size(A);[k2,l2]=size(B);M1=sum(boys);M1=M1.';M1=M1/l1; %求男生身高与体重的均值%M2=sum(girls);M2=M2.';M2=M2/l2; %求女生身高与体重的均值%S1=zeros(k1,k1);S2=zeros(k2,k2);for i=1:l1S1=S1+(A(:,i)-M1)*((A(:,i)-M1).'); %求类内离散度矩阵S1%endfor i=1:l2S2=S2+(B(:,i)-M2)*((B(:,i)-M2).'); %求类内离散度矩阵S2%endfor i=1:2for j=1:2Sw(i,j)=S1(i,j)+S2(i,j); %求总类内离散度矩阵Sw%endendw=inv(Sw)*(M1-M2) %求最有投影方向%wT=w.';for i=1:l1Y1(i)=wT(1,1)*A(1,i)+wT(1,2)*A(2,i); %由分类函数g(x)=wT*x求男生身高和体重的阈值%endfor i=1:l2Y2(i)=wT(1,1)*B(1,i)+wT(1,2)*B(2,i); %由分类函数g(x)=wT*x求女生身高和体重的阈值%endm1=sum(Y1)/l1; %阈值平均%m2=sum(Y2)/l2; %阈值平均%threshold=(l1*m1+l2*m2)/(l1+l2) %求fisher决策面的阈值%程序2:构成fisher判别器%函数功能:应用Fisher准则构成的分类器判断一个身高体重二维数据的性别%函数使用方法:输入classify(hight,weight)其中hight和weight分别是身高和体重的数据function value=classify(hight,weight)w=[0.0012;0.0003];threshold=0.2318;tem=[hight;weight]; %将输入的身高和体重数据构成列向量%result=(w.')*tem; %根据fisher判别式求判别值%if result>threshold %判别值和决策面阈值比较%value=1;elsevalue=0;end程序3:%功能:调用Fisher分类器统计出错率%开发者:安徽工业大学自动化092班刘昌元function result=Error(file)[m,n]=size(file);Boy=0;Girl=0;boy=0;girl=0;for i=1:mif(file(i,3)==0)Girl=Girl+1;elseBoy=Boy+1;endA(i,1)=file(i,1);A(i,2)=file(i,2);endw=[0.0012;0.0003];threshold =0.2318;for i=1:mclassify(A(i,1),A(i,2));if(ans==0)girl=girl+1;elseboy=boy+1;endendtem1=abs(Boy-boy)/Boy;tem2=abs(Girl-girl)/Girl;result(1,1)=Boy;result(1,2)=boy;result(1,3)=tem1;result(2,1)=Girl;result(2,2)=girl;result(2,3)=tem2;程序4:%程序:画图%功能:将训练样本boy.txt和girl.txt中的数据和线性决策面以及贝叶斯决策面画到一幅图上function graphics(boys,girls)w=[0.0012;0.0003];threshold =0.2318;A=boys.';B=girls.';[m1,n1]=size(A);[m2,n2]=size(B);for i=1:n1x=A(1,i);y=A(2,i);plot(x,y,'R.');hold onendfor i=1:n2x=B(1,i);y=B(2,i);plot(x,y,'G.');hold onenda1=min(A(1,:));a2=max(A(1,:));b1=min(B(1,:));b2=max(B(1,:));a3=min(A(2,:));a4=max(A(2,:));b3=min(B(2,:));b4=max(B(2,:));if a1<b1a=a1;elsea=b1;endif a2>b2b=a2;elseb=b2;endif a3<b3c=a3;elsec=b3;endif a4>b4。