模式识别——用身高和或体重数据进行性别分类

来源:高中作文 发布时间:2021-03-27 点击:

用身高和/或体重数据进行性别分类 1、【实验目的】 (1)掌握最小错误率Bayes分类器的决策规则 (2)掌握Parzen窗法 (3)掌握Fisher线性判别方法 (4)熟练运用matlab的相关知识。

2、【实验原理】 (1)、最小错误率Bayes分类器的决策规则 如果在特征空间中观察到某一个(随机)向量x = ( x1 , x2 ,…, xd )T,已知类别状态的先验概率为:和类别的条件概率密度为,根据Bayes公式得到状态的后验概率 有:
基本决策规则:如果,则,将 x 归属后验概率最大的类别 。

(2)、掌握Parzen窗法 对于被估计点X:
其估计概率密度的基本公式,设区域 RN 是以 hN 为棱长的 d 维超立方体,则立方体的体积为;

选择一个窗函数,落入该立方体的样本数为,点 x 的概率密度: 其中核函数:,满足的条件:;

(3)、Fisher线性判别方法 Fisher线性判别分析的基本思想:通过寻找一个投影方向(线性变换,线性组合),将高维问题降低到一维问题来解决,并且要求变换后的一维数据具有如下性质:同类样本尽可能聚集在一起,不同类的样本尽可能地远。

Fisher线性判别分析,就是通过给定的训练数据,确定投影方向W和阈值y0,即确定线性判别函数,然后根据这个线性判别函数,对测试数据进行测试,得到测试数据的类别。

线性判别函数的一般形式可表示成
,其中 根据Fisher选择投影方向W的原则,即使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求,用以评价投影方向W的函数为:


上面的公式是使用Fisher准则求最佳法线向量的解,该式比较重要。另外,该式这种形式的运算,我们称为线性变换,其中式一个向量,是的逆矩阵,如是d维,和都是d×d维,得到的也是一个d维的向量。

  向量就是使Fisher准则函数达极大值的解,也就是按Fisher准则将d维X空间投影到一维Y空间的最佳投影方向,该向量的各分量值是对原d维特征向量求加权和的权值。

以上讨论了线性判别函数加权向量W的确定方法,并讨论了使Fisher准则函数极大的d维向量的计算方法,但是判别函数中的另一项尚未确定,一般可采用以下几种方法确定如
 或者     或当与已知时可用  当W0确定之后,则可按以下规则分类:
 
3、【实验内容及要求】 (1)、实验对象 Datasetf1.TXT 女生的身高、体重数据 Datasetm1.TXT男生的身高、体重数据 ----- 训练样本集 Dataset1.txt 328个同学的身高、体重、性别数据 Dataset2.txt 124个同学的身高、体重、性别数据 ----- 测试样本集 (2)基本要求:
(1) 用Datasetf1.TXT和Datasetm1.TXT的数据作为训练样本集,建立Bayes分类器,用测试样本数据对该分类器进行测试。调整特征、分类器等方面的一些因素,考察它们对分类器性能的影响,从而加深对所学内容的理解和感性认识。(试验直接设计线性分类器的方法,与基于概率密度估计的贝叶斯分离器进行比较) (2) 试验非参数估计,体会与参数估计在适用情况、估计结果方面的异同。

4、【实验结果与分析】 (1)、Bayes分类器的实验结果与分析 A、对于Dataset1.txt 328个同学的身高、体重、性别数据的测试样本集:
A1、当先验概率为:男0.5,女0.5时:
身高分类错误个数:
15 身高分类错误率为:
12.10% 体重分类错误个数:
15 体重分类错误率为:
12.10% 【实验结果:】 A2、当先验概率为:男0.75,女0.25时:
身高分类错误个数:
19 身高分类错误率为:
15.32% 体重分类错误个数:
14 体重分类错误率为:
11.29% B、对于Dataset2.txt 124个同学的身高、体重、性别数据的测试样本集:
B1、当先验概率为:男0.5,女0.5时:
身高分类错误个数:
16 身高分类错误率为:
12.90% 体重分类错误个数:
21 体重分类错误率为:
16.94% 【实验结果:】 B2、当先验概率为:男0.75,女0.25时:
身高分类错误个数:
31 身高分类错误率为:
25.00% 体重分类错误个数:
35 体重分类错误率为:
28.23% 【结果分析:】 Dataset1.txt样本数据集中,男女先验概率为(0.71vs0.29);
Dataset2.txt样本数据集中,男女先验概率为(0.66vs0.34)。

对比实验结果,可以发现身高的分类错误率都小于体重的分类错误率,样本集越大,各个特征对应的分类错误率就越小。假设先验概率为(0.5vs0.5)的分类错误率小于假设先验概率为(0.75vs0.25)的分类集,就算假设的先验概率与实际的很相近,可是结果不准确。

程序框图 Bayes分类器源程序实验代码:
clear all; load datasetf1.txt; load datasetm1.txt; %样本的分析 figure; for i=1:250 if(i<79) plot(datasetf1(i,2),datasetf1(i,1),'r+'); end plot(datasetm1(i,2),datasetm1(i,1),'k*'); hold on; end title('样本数据'); xlabel('体重(Kg)'),ylabel('身高(cm)'); legend('男生','女生'); fid=fopen('dataset1.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; %身高的决策 figure; for i = 1:124 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(pFemale<pMale) plot(i,test(i,1),'k*'); if (test(i,3)=='f') Nerror = Nerror +1; end else plot(i,test(i,1),'r+'); if (test(i,3)=='M') Nerror = Nerror +1; end end hold on; end; error = Nerror/124*100; title('身高最小错误率Bayes分类'); xlabel('测试序号'),ylabel('身高(cm)'); sprintf('%s %d %s %0.2f%s','身高分类错误个数:',Nerror,'身高分类错误率为:',error,'%') %体重决策 figure; error = 0; Nerror = 0; for j= 1:124 PFweight = 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(pwFemale<pwMale) plot(j,test(j,2),'k*'); if (test(j,3)=='f') Nerror = Nerror +1; end else plot(j,test(j,2),'r+'); if (test(j,3)=='M') Nerror = Nerror +1; end end hold on; end; error = Nerror/124*100; title('体重最小错误率Bayes分类'); xlabel('测试序号'),ylabel('体重(kg)'); sprintf('%s %d %s %0.2f%s','体重分类错误个数:',Nerror,'体重分类错误率为:',error,'%') (2)、Parzen窗法的实验结果与分析(先验概率为0.5vs0.5) A、对于Dataset1.txt中有78个女生和250个男生, 共328个同学的身高、体重、性别数据的测试样本集的结果:
女生人数为:84;

男生人数为:244;

拒分人数:0;

女生错分人数:4;

男生错分人数:33;

总的错分人数:37;

女生分类错误率:
0.0800;

男生分类错误率:0.1320;

总的分类错误率:0.1128;

B、对于Dataset2.txt中有40个女生和84个男生, 共124个同学的身高、体重、性别数据的测试样本集:
女生人数为:41;

男生人数为:83;

拒分人数:0;

女生错分人数:15;

男生错分人数:6;

总的错分人数:21;

女生分类错误率:
0.3000;

男生分类错误率:0.0240 ;

总的分类错误率:
0.1694 ;

结果分析:
Parzen窗法的分类结果比较准确,样本集越大,错误率就越小。

Parzen窗法的源程序代码:
clc; clear all; [FH FW]=textread('datasetf1.txt','%f%f'); [MH MW]=textread('datasetm1.txt','%f%f'); FA=[FH FW]; MA=[MH MW]; N1=max(size(FA)); h1=7; hn1=h1/(sqrt(N1)); VN1=hn1^2; N2=max(size(MA)); h2=7; hn2=h2/(sqrt(N2)); VN2=hn2^2; [tH tW]=textread('dataset1.txt','%f%f%*s'); X=[tH tW]; [M N]=size(X); s=zeros(M,1); error=0; errorgirl=0; errorboy=0; errorrate=0; errorgirlrate=0; errorboyrate=0; girl=0; boy=0; bad=0; for k=1:M A=[X(k,1) X(k,2)]; x=A; p=0.5;%p为属于女生的先验概率,则1-p为男生的先验概率 pp=0; for i=1:N1 fa=[FA(i,1) FA(i,2)]; n=1/sqrt(2*pi)*exp(-0.5*abs((x-fa)*(x-fa)')/(hn1^2)); pp=pp+n; end p1=1/VN1*pp'; y1=1/N1*p1;%是女生的条件概率密度函数 qq=0; for j=1:N2 ma=[MA(j,1) MA(j,2)]; m=1/sqrt(2*pi)*exp(-0.5*abs((x-ma)*(x-ma)')/(hn2^2)); qq=m+qq; end q1=sum(1/VN2*qq'); y2=1/N2*q1;%男生的概率密度函数,即其条件概率 g=p*y1-(1-p)*y2;%g为判别函数 if g>0 if k<=50 s(k,1)=0;%判为女生 girl=girl+1; else errorboy=errorboy+1; end else if g<0 if k<=50 errorgirl=errorgirl+1; else s(k,1)=1;%判为男生 boy=boy+1; end else s(k,1)=-2;%不能判别是指等于0时的情况 bad=bad+1; end end end errorgirl errorboy bad girl=errorboy+girl boy=boy+errorgirl error=errorgirl+errorboy errorgirlrate=errorgirl/50 errorboyrate=errorboy/250 errorrate=error/M

推荐访问:
上一篇:年机要秘书试用期工作总结
下一篇:XX县财政局2019年公民道德建设宣传教育月活动工作总结

Copyright @ 2013 - 2018 优秀啊教育网 All Rights Reserved

优秀啊教育网 版权所有