模式识别实验报告.doc_第1页
模式识别实验报告.doc_第2页
模式识别实验报告.doc_第3页
模式识别实验报告.doc_第4页
模式识别实验报告.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

院 系: 计算机科学学院 专 业: 智能科学与技术 年 级: 2012 级 课程名称: 模式识别 组 号: 13组 组 员: 徐灿 马卿 指导教师: 孙阳光老师 2014年12月30日年级2012级学号20122138552012213875专业智能科学与技术姓名徐灿马卿实验时间2014.10.8实验地点9#206实验名称用身高和/或体重数据进行性别分类的实验实验类型设计型综合型创新型实验目的或要求基本要求: 用PR_Exp1_Data_1.TXT 和PR_Exp1_Data_2.TXT 的数据作为训练样本集,建立Bayes 分类器,用PR_Exp1_Data_3.TXT测试样本数据对该分类器进行测试。调整特征、分类器等方面的一些因素,考察它们对分类器性能的影响,从而加深对所学内容的理解和感性认识。 具体做法: 1 应用单个特征进行实验:以(a)身高或者(b)体重数据作为特征,在正态 分布假设下利用最大似然法或者贝叶斯估计法估计分布密度参数(只利用训 练数据估计密度),建立最小错误率Bayes 分类器,写出得到的决策规则,将 该分类器应用到测试样本,考察测试错误情况。在分类器设计时可以考察采 用不同先验概率(如0.5 对0.5, 0.75 对0.25, 0.9 对0.1 等)进行实验,考察对 决策规则和错误率的影响。 2 应用两个特征进行实验:同时采用身高和体重数据作为特征,分别假设二者 相关或不相关,在正态分布假设下估计概率密度,建立最小错误率Bayes 分 类器,写出得到的决策规则,将该分类器应用到训练/测试样本,考察训练/ 测试错误情况。比较相关假设和不相关假设下结果的差异。在分类器设计时 可以考察采用不同先验概率(如0.5 vs. 0.5, 0.75 vs. 0.25, 0.9 vs. 0.1 等)进行 实验,考察对决策和错误率的影响。 3 自行给出一个决策表,采用最小风险的Bayes 决策重复上面的某个或全部实 验。 需要用到的数据文件: 训练和测试样本集: PR_Exp1_Data_1.txt 124 个同学的身高、体重、性别数据(40 个女生、84 个男生) PR_Exp1_Data_2.txt 328 个同学的身高、体重、性别数据(78 个女生、250 个男生) PR_Exp1_Data_3.txt 90 个同学的身高、体重、性别数据(16 个女生、74 个男生) 实验代码(身高或者体重)clear all;load datasetf1.txt; %读入样本数据男生load datasetm1.txt; %读入样本数据女生%样本的分析figure;for i=1:250 if(i79) plot(datasetf1(i,2),datasetf1(i,1),r+); end plot(datasetm1(i,2),datasetm1(i,1),k*); hold on;endtitle(样本数据);xlabel(体重(Kg),ylabel(身高(cm);legend(男生,女生);%打开文件(测试文件和训练文件)此处选择文件为第三组测试文件fid=fopen(dataset3.txt,r); test1=fscanf(fid,%f %f %s,3,inf);%文件读取格式test=test1;fclose(fid);Fmean = mean(datasetf1);Mmean = mean(datasetm1);Fvar = std(datasetf1);Mvar = std(datasetm1);preF = 0.5; %先验概率的设定和修改preM = 0.5;error = 0;Nerror = 0; %错误个数和错误率的设定%身高的决策sprintf(%s,样本数为90时P0.50.5:) %测试或者训练样本的个数figure;for i = 1:90 %测试或者训练样本的个数PFheight = normpdf(test(i,1),Fmean(1,1),Fvar(1,1) ; %得到男生身高的数据PMheight = normpdf(test(i,1),Mmean(1,1),Mvar(1,1) ; %得到女生身高的数据pFemale = preF*PFheight;pMale = preM*PMheight; if(pFemalepMale) plot(i,test(i,1),k*); if (test(i,3)=0) Nerror = Nerror +1; end 实验代码(身高或者体重)else plot(I,test(I,1),r+); if (test(I,3)=1) Nerror = Nerror +1; end end hold on;end;error = Nerror/90*100; %根据样本的选择来确定除以的样本个数title(身高最小错误率Bayes分类);xlabel(测试序号),ylabel(身高(cm);sprintf(%s %d %s %0.2f%s,身高分类错误个数:,Nerror,身高分类错误率为:,error,%)%体重决策figure;error = 0;Nerror = 0;for j= 1:90Pfweight = normpdf(test(j,2),Fmean(1,2),Fvar(1,2) ; %得到男生体重的数据Pmweight = normpdf(test(j,2),Mmean(1,2),Mvar(1,2) ; %得到女生体重的数据pwFemale = preF*Pfweight;pwMale = preM*Pmweight;if(pwFemalepwMale) plot(j,test(j,2),k*); if (test(j,3)=0) Nerror = Nerror +1; end else plot(j,test(j,2),r+); if (test(j,3)=1) Nerror = Nerror +1; end end hold on;end;error = Nerror/90*100; %根据样本的选择来确定除以的样本个数title(体重最小错误率Bayes分类);xlabel(测试序号),ylabel(体重(kg);sprintf(%s %d %s %0.2f%s,体重分类错误个数:,Nerror,体重分类错误率为:,error,%)实验代码(身高和体重的乘积)%以身高乘以体重计算(男生的身高乘以体重比值较大,女生较小)clear all;load datasetf1.txt; load datasetm1.txt;fid=fopen(dataset3.txt,r); %测试和训练样本test1=fscanf(fid,%f %f %s,3,inf);test=test1;fclose(fid);Fmean = mean(datasetf1); %求每一列的均值Mmean = mean(datasetm1);Fvar = std(datasetf1);%算出每一列的标准偏差。Mvar = std(datasetm1);preF = 0.5; %先验概率的设定,根据先验概率的不同修改preM = 0.5;error = 0;Nerror = 0;%身高的决策sprintf(%s,样本数为90时P0.50.5:) %测试或者训练样本的个数figure;for i = 1:90 %测试或者训练样本的个数PFheight = normpdf(test(i,1),Fmean(1,1),Fvar(1,1)*normpdf(test(i,2),Fmean(1,2),Fvar(1,2) ;%正态分布密度函数PMheight = normpdf(test(i,1),Mmean(1,1),Mvar(1,1)*normpdf(test(i,2),Mmean(1,2),Mvar(1,2) ;pFemale = preF*PFheight;pMale = preM*PMheight; if(pFemale0?X女生2实验结果分析样本分析的图像(此处把数据改成两类,男生的单独为一个文件,女生的单独为一个文件)P0.5-P0.5时328个样本的错误率分析P0.5-P0.5时124个样本的错误率分析P0.75-P0.25时328个样本的错误率分析P0.75-P0.25时124个样本的错误率分析P0.9-P0.1时328个样本的错误率分析P0.9-P0.1时124个样本的错误率分析表格 1身高和体重单独下各样本下各种概率的错误率分析样本概率为P0.5-P0.5误差概率概率P 0.75P0.25误差概率概率P 0.9P0.1误差概率328个样本身高错误个数: 33错误率为: 10.06%错误个数: 60错误率为: 18.29%错误个数: 81 错误率为: 24.70%体重错误个数: 45错误率为: 13.72%错误个数: 68错误率为: 20.73%错误个数: 89 错误率为: 27.13%124个样本身高错误个数: 16错误率为: 12.90%错误个数: 31错误率为: 25.00%错误个数: 34错误率为: 27.42%体重错误个数: 21错误率为: 16.94%错误个数: 35错误率为: 28.23%错误个数: 37错误率为: 29.84%根据表格内容,选择P0.5P0.5时的概率对样本3进行分析,得到的结果以身高乘以体重的算法来计算错误率分类时的结果P0.5-P0.5时328个样本的错误率分析P0.5-P0.5时124个样本的错误率分析P0.75-P0.25时328个样本的错误率分析 P0.75-P0.25时124个样本的错误率分析P0.9-P0.1时328个样本的错误率分析P0.9-P0.1时124个样本的错误率分析表格 2身高和体重乘积下各样本下各种概率的错误率分析样本概率为P0.5P0.5时的身高体重错误率概率为P0.75P0.25时的身高体重错误率概率为P0.9P0.1时的身高体重错误率样本为328时分类错误个数: 30 分类错误率为: 9.15%分类错误个数: 37 分类错误率为: 11.28%分类错误个数: 49 分类错误率为: 14.94%样本为124时分类错误个数: 17 分类错误率为: 13.71%分类错误个数: 19分类错误率为: 15.32%分类错误个数: 23分类错误率为: 18.55%根据表格内容,选择P0.5P0.5时的概率对样本3进行分析,得到的结果 年级2012级学号20122138552012213875专业智能科学与技术姓名徐灿马卿实验时间2014.11.8实验地点9#206实验名称用身高/体重数据进行性别分类的实验(二)实验类型设计型综合型创新型实验目的或要求基本要求:_试验利用Fisher线性判别方法获取分类器。_试验直接设计线性分类器的方法,与基于概率密度估计的贝叶斯分离器进行比较。具体做法:1同时采用身高和体重数据作为特征,用Fisher线性判别方法求分类器,将该分类器应用到训练和测试样本,考察训练和测试错误情况。2将训练样本和求得的决策边界画到图上,同时把以往用Bayes方法求得的分类器也画到图上,比较结果的异同。需要用到的数据文件:训练样本集:PR_Exp2_Data_1.txtPR_Exp2_Data_2.txtPR_Exp2_Data_3.txtPR_Exp2_Data_4.txtPR_Exp2_Data_5.txtPR_Exp2_Data_6.txt测试样本集:实验(一)中的样本集。要求:参见实验(一)。Fisher线性判别函数%用fisher线性判别函数来判断clcclear allfilename,pathname,filterindex = uigetfile(FEMALE.txt, 请读入男生训练集);fileAddrs = pathname,filename;A1 A2=textread(fileAddrs,%f%f);filename,pathname,filterindex = uigetfile(MALE.txt, 请读入女生训练集);fileAddrs = pathname,filename;B1 B2=textread(fileAddrs,%f%f);AA=A1 A2;BB=B1 B2;w,y0=fisher(AA,BB);wT=w;girl=0;boy=0;bad=0;errorgirl=0;errorboy=0;error=0;errorgirlrate=0;errorboyrate=0; errorrate=0;Fisher线性判别函数(样本数为90时的判断和错误率分析)%以测试数据为90的样本为例子filename,pathname,filterindex = uigetfile(dataset3.txt, 请读入测试集);fileAddrs = pathname,filename;T1 T2=textread(fileAddrs,%f%f%*s);TT=T1 T2;T=TT;k3 l3=size(T);for k=1:16 y(k)=wT*T(:,k); if y(k)y0 girl=girl+1; end endendfor k=16:90 y(k)=wT*T(:,k); if y(k)y0 errorboy=errorboy+1; bad=bad+1; end endenderrorgirlerrorboybadgirl=errorboy+girlboy=boy+errorgirlerror=errorgirl+errorboyerrorgirlrate=errorgirl/16errorboyrate=errorboy/74errorrate=error/90调用函数%用fisher线性判别法求阈值的调用函数function w,y0=fisher(AA,BB)A=AA;B=BB;k1,l1=size(A);k2,l2=size(B);M1=sum(AA);M1=M1;M1=M1/l1;%男生均值向量M2=sum(BB);M2=M2;M2=M2/l2;%女生均值向量S1=zeros(k1,k1);%建立矩阵S2=zeros(k2,k2);for i=1:l1 S1=S1+(A(:,i)-M1)*(A(:,i)-M1).);%男生的类内离散度矩阵endfor i=1:l2 S2=S2+(B(:,i)-M2)*(B(:,i)-M2).);%女生的类内离散度矩阵endSw=0.5*S1+0.5*S2;%总类内离散度矩阵,先验概率0.5w=inv(Sw)*(M1-M2);%两列wT=w;%wT就是使Fisher准则函数JF(w)取极大值时的解,也就是d维X空间到1维Y空间的最好的投影方向for i=1:l1 Y1(i)=wT(1,1)*A(1,i)+wT(1,2)*A(2,i);%求出二维男生样本集映射到一维时的量endfor i=1:l2 Y2(i)=wT(1,1)*B(1,i)+wT(1,2)*B(2,i);%求出二维女生样本集映射到一维时的量endm1=sum(Y1)/l1;m2=sum(Y2)/l2;y0=(l1*m1+l2*m2)/(l1+l2);%function value=classify_CH(x,y,w,y0)%程序:模式识别%功能:应用Fisher准则判断一个身高体重二维数据的性别vector=x;y;yy=(w.)*vector;if yyy0 value=2;%表示样本是男生else value=1;%表示样本是女生endFisher分类器画图%fisher分类器画图filename,pathname,filterindex = uigetfile(datasetf1*.txt, 请读入男生训练集);fileAddrs = pathname,filename;A1 A2=textread(fileAddrs,%f%f);filename,pathname,filterindex = uigetfile(datasetm1*.txt, 请读入女生训练集);fileAddrs = pathname,filename;B1 B2=textread(fileAddrs,%f%f);AA=A1 A2;BB=B1 B2;A=AA;B=BB;k1,l1=size(A);k2,l2=size(B);w,y0=fisher(AA,BB);for i=1:l1 x=A(1,i); y=A(2,i);%x是身高,y是体重 plot(x,y,R.); hold onendfor i=1:l2 x=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 a1b2 b=a2;else b=b2;%b是所有人中身高最大值endFisher分类器画图if a3b4 d=a4;else d=b4;%d为所有人中体重最大值endx=a:0.01:b;y=(y0-x*w(1,1)/w(2,1);plot(x,y,B);hold on;%身高体重相关,判别测试样本%手动先验概率P1=0.5;P2=0.5;FA=B;MA=A;a=cov(FA)*(length(FA)-1)/length(FA);b=cov(MA)*(length(MA)-1)/length(MA);W1=-1/2*inv(a);W2=-1/2*inv(b);Ave1=(sum(FA)/length(FA);Ave2=(sum(MA)/length(MA);w1=inv(a)*Ave1;w2=inv(b)*Ave2;w10=-1/2*Ave1*inv(a)*Ave1-1/2*log(det(a)+log(P1);w20=-1/2*Ave2*inv(b)*Ave2-1/2*log(det(b)+log(P2); syms x ; syms y ; h=x y; h1=h*W1*h+w1*h+w10; h2=h*W2*h+w2*h+w20 ; h=h1-h2; ezplot(h,130,200,30,100)Fisher方法求分界线clcclear all;load FEMALE.txt;load MALE.txt;FEMALE=FEMALE; %特征为列向量MALE=MALE;fid=fopen(dataset3.txt,r); test1=fscanf(fid,%f %f %s,3,inf);test=test1;fclose(fid);FS=0 0;0 0;MS=0 0;0 0;Fmean = mean(FEMALE);Mmean = mean(MALE);figure;for i=1:16FS1=(FEMALE(:,i)-Fmean)*(FEMALE(:,i)-Fmean);MS2=(MALE(:,i)-Mmean)*(MALE(:,i)-Mmean);FS = FS1+FS;MS = MS2+MSend; SW=FS+MS;Sb=(Fmean-Mmean)*(Fmean-Mmean);w=inv(SW)*(Fmean-Mmean);mu1=w*Fmean;mu2=w*Mmean;b=(mu1+mu2)/2;for i=1:90 if (test(i,3)=102)plot(test(i,1),test(i,2),r+); end; if (test(i,3)=109) plot(test(i,1),test(i,2),k*); end; hold on;end;x=test(:,1); y=(b-w(1,1)*x)/w(2,1);plot(x,y);title(Fisher方法求分界线);xlabel(身高(cm),ylabel(体重(kg)Bayes(贝叶斯)判别性别时的概率分类线clcclear all;X=120:0.1:200pw1=0.5;pw2=0.5sample1=textread(FEMALE.txt)samplew1=zeros(1,length(sample1(:,1);u1=mean(sample1(:,1);m1=std(sample1(:,1);y1=normpdf(X,u1,m1);figure(1);subplot(2,1,1);plot(X,y1);title(身高条件先验概率);hold onsample2=textread(MALE.txt)samplew2=zeros(1,length(sample2(:,1)u2=mean(sample2(:,1);m2=std(sample2(:,1);y2=normpdf(X,u2,m2);subplot(2,1,2);plot(X,y2);D=(pw1*y1+pw2*y2)E1=pw1*y1;E2=pw2*y2P1=E1./DP2=E2./Dfigure(2)subplot(2,1,1);plot(X,P1);title(身高条件后验概率)subplot(2,1,2);plot(X,P2);title(最小风险bayes概率分布曲线);figure(3)subplot(3,1,1);plot(X,E1)subplot(3,1,2);plot(X,E2)subplot(3,1,3);plot(X,E1,X,E2)sample=textread(all sample.txt)result=bayes(sample1(:,1),sample2(:,1),pw1,pw2)实验原理实验思路1.得到fisher函数和分界线选择合适的样本和对应的先验概率,然后运用到测试样本中。(1) 先选择相应的概率分布P0.5p0.5对328个样本进行分析(2) 先选择相应的概率分布P0.5p0.5对90个样本进行分析(3) 得到fisher分类线2.将bayes方法得到的概率分布曲线和fisher分界线放在一起比较,观察其中的容错分析。将fisher分界线和bayes概率分布线放在一起比较,从概率分布曲线得到概率分布的重合部分看出易错的部分。代码来源:Fisher的第一个分类器是在网上找的,fisher匪类起的第二个程序是自己改编的,里面没有女生画出来的那一个分界线。Bayes的男生女生概率分布曲线分类器是在网上搜索的代码。求各类样本均值向量求类内离散度矩阵用公式求最好的变换向量二维空间向一维y空间投影一维空间样本均值求取阈值决策判断计算各类样本的错误率 导入两个训练样本集依次将女生样本集中的每一个样本当做测试集,余下的所有样本做训练集用Fisher法判断被选出来的样本,若判断错误,计数一次将男生按照以上方法再进行判别,计数,得到错误率再将以上方法用以测试集,得到错误率实验结果分析根据样本得到的fisher分界线样本为328时的错误率分析:样本为90时的错误率分析 身高和体重相关时的bayes(贝叶斯)判别性别时的分类线身高条件先验概率分布曲线身高条件后验概率分布曲线最小风险时bayes分类器概率分布曲线根据样本得到的fisher分界线最小风险时bayes分类器概率分布曲线结果分析;由两个图可以看出,由fisher分类法得到的错误率比bayes的错误率低很多,但是当样本的数据分布不均时,使用fisher分类法得到的错误率会比bayes分类法得到的错误率高。所以可以根据合适的样本数据选择两种方法进行比较,选出比较合适的方法。年级2012级学号20122138552012213875专业智能科学与技术姓名徐灿马卿实验时间2014.11.8实验地点9#206实验名称用身高/体重数据进行性别分类的实验(三)实验类型设计型综合型创新型实验目的或要求 基本要求: 用*_FAMALE_*.TXT、*_MALE_*.TXT的数据作为本次实验使用的样本集,利用C 均值和分级聚类方法对样本集进行聚类分析,对结果进行分析,从而加深对所学内容的理解和感性认识。 具体做法: 1 把实验数据文件中任意两个*_FAMALE_*.TXT 和*_MALE_*.TXT 两个文件合并成一个(实验报告中应指明具体是采用那个数据文件进行的实验),同时采用身高和体重数据作为特征,设类别数为2,利用C 均值聚类方法对数据进行聚类,并将聚类结果表示在二维平面上。尝试不同初始值对此数据集是否会造成不同的结果。 2 (选做)对1 中的数据利用C 均值聚类方法分别进行三类、四类、五类聚类,画出聚类指标与类别数之间的关系曲线,探讨是否可以确定出合理的类别数目。 3 (选做)利用某两个*_FAMALE_*.TXT 和*_MALE_*.TXT的文件数据,与把全部数据文件相应合并在一起,重复上述各实验,考察结果是否有变化,对观察到的现象进行分析,写出体会。 需要用到的数据文件: PR_Exp3_Data_FAMALE_1.txt PR_Exp3_Data_MALE_2.txt PR_Exp3_Data_FAMALE_3.txt PR_Exp3_Data_MALE_4.txtPR_Exp3_Data_FAMALE_5.txt PR_Exp3_Data_MALE_5.txt实验原理clc;clear all;FH FW=textread(FEMALE.txt,%f %f); %读取合并的数据MH MW=textread(MALE.txt,%f %f);FA=FH FW;FA=FA;MA=MH MW;MA=MA;for k=1:134 %数据里面男生人数 NT(:,k)=FA(:,k)end for k=135:542 %数据里面女生人数 NT(:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论