用身高和体重数据进行性别分类的实验报告.docx

上传人:b****6 文档编号:7167038 上传时间:2023-01-21 格式:DOCX 页数:22 大小:314.63KB
下载 相关 举报
用身高和体重数据进行性别分类的实验报告.docx_第1页
第1页 / 共22页
用身高和体重数据进行性别分类的实验报告.docx_第2页
第2页 / 共22页
用身高和体重数据进行性别分类的实验报告.docx_第3页
第3页 / 共22页
用身高和体重数据进行性别分类的实验报告.docx_第4页
第4页 / 共22页
用身高和体重数据进行性别分类的实验报告.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

用身高和体重数据进行性别分类的实验报告.docx

《用身高和体重数据进行性别分类的实验报告.docx》由会员分享,可在线阅读,更多相关《用身高和体重数据进行性别分类的实验报告.docx(22页珍藏版)》请在冰豆网上搜索。

用身高和体重数据进行性别分类的实验报告.docx

用身高和体重数据进行性别分类的实验报告

用身高和体重数据进行性别分类的实验报告

部门:

xxx

时间:

xxx

 

整理范文,仅供参考,可下载自行编辑

用身高和体重数据进行性别分类的实验报告<二)

一、基本要求

1、实验非参数估计,体会与参数估计在适用情况、估计结果方面的异同。

2、实验直接设计线性分类器的方法,与基于概率密度估计的贝叶斯分类器进行比较。

3、体会留一法估计错误率的方法和结果。

二、具体做法

1、在第一次实验中,挑选一次用身高作为特征,并且先验概率分别为男生0.5,女生0.5的情况。

改用Parzen窗法或者kn近邻法估计概率密度函数,得出贝叶斯分类器,对测试样本进行测试,比较与参数估计基础上得到的分类器和分类性能的差别。

b5E2RGbCAP

2、同时采用身高和体重数据作为特征,用Fisher线性判别方法求分类器,将该分类器应用到训练和测试样本,考察训练和测试错误情况。

将训练样本和求得的决策边界画到图上,同时把以往用Bayes方法求得的分类器也画到图上,比较结果的异同。

p1EanqFDPw

3、选择上述或以前实验的任意一种方法,用留一法在训练集上估计错误率,与在测试集上得到的错误率进行比较。

DXDiTa9E3d

三、原理简述及程序框图

1、挑选身高(身高与体重>为特征,选择先验概率为男生0.5女生0.5的一组用Parzen窗法来求概率密度函数,再用贝叶斯分类器进行分类。

RTCrpUDGiT

以身高为例

本次实验我们组选用的是正态函数窗,即

,窗宽为

因为区域是一维的,所以体积为

Parzen公式为

5PCzVD7HxA

故女生的条件概率密度为

男生的条件概率密度为

根据贝叶斯决策规则

如果

,否则,

流程图如下:

2、要求是同时采用身高和体重数据作为特征,用Fisher线性判别方法求分类器,将该分类器应用到训练和测试样本,考察训练和测试错误情况。

将训练样本和求得的决策边界画到图上,同时把以往用Bayes方法求得的分类器也画到图上,比较结果的异同。

jLBHrnAILg

说明,取男生和女生的先验概率分别为0.5,0.5。

在设计贝叶斯分类器时,首先求各类样本均值向量,及

,然后求各个样本的来内离散度矩阵,及

,再求出样本的总类内离散度,及

,根据公式

求出把二维X空间投影到一维Y空间的最好的投影方向。

再求出一维Y空间中各类样本均值

,其中

本次实验的分界阈值我们用如下方法得到:

最后,将测试样本中的值代入,求出y,并将其与y0来进行比较来分类。

xHAQX74J0X

根据课本对Fisher线性判别法的介绍,得到的算法流程图如下:

3、选择上述或以前实验的任意一种方法,用留一法在训练集上估计错误率,与在测试集上得到的错误率进行比较。

LDAYtRyKfE

这里我们选择Fisher线性判别法,用留一法来估计它在训练集上的错误率,并将结果与Fisher线性判别法对测试集进行判别时得到的错误率进行比较。

Zzz6ZB2Ltk

具体流程图如下:

四、实验结果及分析总结

1、得到结果如下表

以身高作为特征

h=4

估计方法

女生先验概率

男生先验概率

男生错误个数

女生错误个数

总错误

男生错误率

女生错误率

总错误率

Parzen窗法

0.25

0.75

22

8

30

16%

8.8%

10%

0.5

0.5

34

4

38

13.6%

8%

12.67%

0.75

0.25

80

2

82

32%

4%

27.33%

最大似然Bayes

0.25

0.75

20

6.667%

0.5

0.5

27

9%

0.75

0.25

60

20%

以身高与体重作为特征

h=7

估计方法

女生先验概率

男生先验概率

男生错误个数

女生错误个数

总错误

男生错误率

女生错误率

总错误率

Parzen窗法

0.25

0.75

7

22

29

14%

8.8%

9.67%

0.5

0.5

38

2

40

15.2%

4%

13.33%

0.75

0.25

2

46

48

18.4%

4%

16%

最大似然Bayes

0.25

0.75

8

6

14

3.2%

12%

4.67%

0.5

0.5

29

3

32

11.6%

6%

10.67%

0.75

0.2

59

1

60

23.6%

2%

20%

分析:

通过比较可知,在用最大似然估计这种参数估计方法和Parzen这种非参数估计方法来进行分类时,最大似然估计判别的错误率低。

dvzfvkwMI1

2、得到结果如下

<1)、用Fisher线性判别方法求分类器,将分类器应用到训练和测试样本上,比较其错误率

判别

对象

男生错误个数

女生错误个数

总错误

男生错误率

女生错误率

总错误率

测试样本

27

2

29

10.8%

4%

9.67%

训练样本

8

4

12

16%

8%

12%

分析:

用训练样本得到的分类器测试测试样本时错误率低,测试结果较好,但测试训练样本时,其错误率较高,测试结果不好。

rqyn14ZNXI

<2)、将训练样本和求得的决策边界画到图上

先验概略为0.5,0.5

从图中我们可以直观的比较出对训练样本Fisher判别比最大似然Bayes判别效果更好。

3、留一法测试结果如下:

判别

对象

男生错误个数

女生错误个数

错误率

测试样本

81

3

28%

训练样本

8

4

12%

分析:

用留一法在训练样本机上估计错误率时,错误率小于它在测试样本集上得到的错误率,且留一法在测试样本集上女生错误个数远低于男生错误个数。

EmxvxOtOco

五、体会

这次实验,我们组用了接近三天的时间,首先,我们对题目要求进行认真分析,在确保对题目完全理解的基础上,开始一步一步分析,求解。

对每个小题,及其每一问,我们都经过查书,查资料,编代码这几个步骤,仔细分析每一步算法,得出流程图。

经过第一次作业的编程,本次编程我们都觉得轻松了很多,但还会出现一些细节上的错误,不过,这些在我们经过不断的调试之后都会被发现并解决。

总体而言,本次实验,让我们对Parzen窗法求类条件概率密度,以及Fisher线性判别法都有了更大的了解。

SixE2yXPq5

代码:

%特征是身高,先验概率为0.5、0.5时用Parzen窗法,贝叶斯分类器。

clc。

clearall。

[FHFW]=textread('C:

\Users\xuyd\Desktop\homework\FEMALE.txt','%f%f'>。

6ewMyirQFL

[MHMW]=textread('C:

\Users\xuyd\Desktop\homework\MALE.txt','%f%f'>。

kavU42VRUs

FA=[FHFW]。

MA=[MHMW]。

N1=max(size(FA>>。

h1=4。

hn1=h1/(sqrt(N1>>。

VN1=h1/(sqrt(N1>>。

N2=max(size(MA>>。

h2=4。

hn2=h2/(sqrt(N2>>。

VN2=h2/(sqrt(N2>>。

[tHtW]=textread('C:

\Users\xuyd\Desktop\homework\test2.txt','%f%f%*s'>。

y6v3ALoS89

X=[tHtW]。

[MN]=size(X>。

s=zeros(M,1>。

A=[X(:

1>X(:

2>s]。

error=0。

errorgirl=0。

errorboy=0。

errorrate=0。

errorgirlrate=0。

errorboyrate=0。

girl=0。

boy=0。

bad=0。

fork=1:

M%测试集

x=A(k>。

p=0.5。

%p为属于女生的先验概率,则1-p为男生的先验概率

fori=1:

N1

pp(i>=1/sqrt(2*pi>*exp(-0.5*(abs(x-FA(i>>>^2/(hn1^2>>。

%pp

end

p1=sum(1/VN1*pp'>。

y1=1/N1*p1。

%是女生的条件概率密度函数

forj=1:

N2

qq(j>=1/sqrt(2*pi>*exp(-0.5*(abs(x-MA(j>>>^2/(hn2^2>>。

0YujCfmUCw

end

q1=sum(1/VN2*qq'>。

y2=1/N2*q1。

%男生的概率密度函数,即其条件概率

g=p*y1-(1-p>*y2。

%g为判别函数

ifg>0

ifk<=50

s(k,1>=0。

%判为女生

girl=girl+1。

else

errorboy=errorboy+1。

end

elseifg<0

ifk<=50

errorgirl=errorgirl+1。

else

s(k,1>=1。

%判为男生

boy=boy+1。

end

else

s(k,1>=-2。

%不能判别是指等于0时的情况

bad=bad+1。

end

end

errorgirl

errorboy

bad

girl=errorboy+girl

boy=boy+errorgirl

error=errorgirl+errorboy

errorgirlrate=errorgirl/50

errorboyrate=errorboy/250

errorrate=error/M

%特征是身高与体重,先验概率为0.5、0.5时用Parzen窗法,贝叶斯分类器。

clc。

clearall。

[FHFW]=textread('C:

\Users\xuyd\Desktop\homework\FEMALE.txt','%f%f'>。

eUts8ZQVRd

[MHMW]=textread('C:

\Users\xuyd\Desktop\homework\MALE.txt','%f%f'>。

sQsAEJkW5T

FA=[FHFW]。

MA=[MHMW]。

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。

[tHtW]=textread('C:

\Users\xuyd\Desktop\homework\test2.txt','%f%f%*s'>。

GMsIasNXkA

X=[tHtW]。

[MN]=size(X>。

s=zeros(M,1>。

error=0。

errorgirl=0。

errorboy=0。

errorrate=0。

errorgirlrate=0。

errorboyrate=0。

girl=0。

boy=0。

bad=0。

fork=1:

M

A=[X(k,1>X(k,2>]。

x=A。

p=0.5。

%p为属于女生的先验概率,则1-p为男生的先验概率

pp=0。

fori=1:

N1

fa=[FA(i,1>FA(i,2>]。

n=1/sqrt(2*pi>*exp(-0.5*abs((x-fa>*(x-fa>'>/(hn1^2>>。

TIrRGchYzg

pp=pp+n。

end

p1=1/VN1*pp'。

y1=1/N1*p1。

%是女生的条件概率密度函数

qq=0。

forj=1:

N2

ma=[MA(j,1>MA(j,2>]。

m=1/sqrt(2*pi>*exp(-0.5*abs((x-ma>*(x-ma>'>/(hn2^2>>。

7EqZcWLZNX

qq=m+qq。

end

q1=sum(1/VN2*qq'>。

y2=1/N2*q1。

%男生的概率密度函数,即其条件概率

g=p*y1-(1-p>*y2。

%g为判别函数

ifg>0

ifk<=50

s(k,1>=0。

%判为女生

girl=girl+1。

else

errorboy=errorboy+1。

end

elseifg<0

ifk<=50

errorgirl=errorgirl+1。

else

s(k,1>=1。

%判为男生

boy=boy+1。

end

else

s(k,1>=-2。

%不能判别是指等于0时的情况

bad=bad+1。

end

end

errorgirl

errorboy

bad

girl=errorboy+girl

boy=boy+errorgirl

error=errorgirl+errorboy

errorgirlrate=errorgirl/50

errorboyrate=errorboy/250

errorrate=error/M

%用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>。

fori=1:

l1

S1=S1+(A(:

i>-M1>*((A(:

i>-M1>.'>。

%男生的类内离散度矩阵

end

fori=1:

l2

S2=S2+(B(:

i>-M2>*((B(:

i>-M2>.'>。

%女生的类内离散度矩阵

end

Sw=0.5*S1+0.5*S2。

%总类内离散度矩阵,先验概率0.5

w=inv(Sw>*(M1-M2>。

%两列

wT=w'。

%wT就是使Fisher准则函数JF

fori=1:

l1

Y1(i>=wT(1,1>*A(1,i>+wT(1,2>*A(2,i>。

%求出二维男生样本集映射到一维时的量zvpgeqJ1hk

end

fori=1:

l2

Y2(i>=wT(1,1>*B(1,i>+wT(1,2>*B(2,i>。

%求出二维女生样本集映射到一维时的量NrpoJac3v1

end

m1=sum(Y1>/l1。

m2=sum(Y2>/l2。

y0=(l1*m1+l2*m2>/(l1+l2>。

%

%用fisher线性判别函数来判断

clc

clearall

[filename,pathname,filterindex]=uigetfile('*.txt','请读入男生训练集'>。

1nowfTG4KI

fileAddrs=[pathname,filename]。

[A1A2]=textread(fileAddrs,'%f%f'>。

[filename,pathname,filterindex]=uigetfile('*.txt','请读入女生训练集'>。

fjnFLDa5Zo

fileAddrs=[pathname,filename]。

[B1B2]=textread(fileAddrs,'%f%f'>。

AA=[A1A2]。

BB=[B1B2]。

[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。

[filename,pathname,filterindex]=uigetfile('*.txt','请读入测试集'>。

tfnNhnE6e5

fileAddrs=[pathname,filename]。

[T1T2]=textread(fileAddrs,'%f%f%*s'>。

TT=[T1T2]。

T=TT'。

[k3l3]=size(T>。

fork=1:

50

y(k>=wT*T(:

k>。

ify(k>>y0

errorgirl=errorgirl+1。

elseify(k>

girl=girl+1。

else

bad=bad+1。

end

end

end

fork=51:

300

y(k>=wT*T(:

k>。

ify(k>>y0

boy=boy+1。

elseify(k>

errorboy=errorboy+1。

else

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/l3

%画图

[filename,pathname,filterindex]=uigetfile('*.txt','请读入男生训练集'>。

HbmVN777sL

fileAddrs=[pathname,filename]。

[A1A2]=textread(fileAddrs,'%f%f'>。

[filename,pathname,filterindex]=uigetfile('*.txt','请读入女生训练集'>。

V7l4jRB8Hs

fileAddrs=[pathname,filename]。

[B1B2]=textread(fileAddrs,'%f%f'>。

AA=[A1A2]。

BB=[B1B2]。

A=AA'。

B=BB'。

[k1,l1]=size(A>。

[k2,l2]=size(B>。

[w,y0]=fisher(AA,BB>。

fori=1:

l1

x=A(1,i>。

y=A(2,i>。

%x是身高,y是体重

plot(x,y,'R.'>。

holdon

end

fori=1:

l2

x=B(1,i>。

y=B(2,i>。

plot(x,y,'G.'>。

holdon

end

a1=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,:

>>。

%女生体重最大值

ifa1

a=a1。

else

a=b1。

%a是所有人中身高最小值

end

ifa2>b2

b=a2。

else

b=b2。

%b是所有人中身高最大值

end

ifa3

c=a3。

else

c=b3。

%c是所有人中体重最小值

end

ifa4>b4

d=a4。

else

d=b4。

%d为所有人中体重最大值

end

x=a:

0.01:

b。

y=(y0-x*w(1,1>>/w(2,1>。

plot(x,y,'B'>。

holdon。

%身高体重相关,判别测试样本

%手动先验概率

P1=0.5。

P2=0.5。

FA=A。

MA=B。

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>。

83lcPA59W9

w20=-1/2*Ave2'*inv(b>*Ave2-1/2*log(det(b>>+log(P2>。

mZkklkzaaP

symsx。

symsy。

h=[xy]'。

h1=h'*W1*h+w1'*h+w10。

h2=h'*W2*h+w2'*h+w20。

h=h1-h2。

ezplot(h,[130,200,30,100]>

%功能:

应用Fisher准则判断一个身高体重二维数据的性别

vector=[x。

y]。

yy=(w.'>*vector。

ifyy>y0

value=2。

%表示样本是男生

else

value=1。

%表示样本是女生

end

%功能:

使用留一法求训练样本错误率

[A1A2]=textread('C:

\Users\Administrator\Desktop\模式识别\homework\MALE.txt','%f%f'>。

AVktR43bpw

[B1B2]=textread('C:

\Users\Administrator\Desktop\模式识别\homework\FEMALE.txt','%f%f'>。

ORjBnOwcEd

AA=[A1A2]。

BB=[B1B2]。

A=AA'。

B=BB'。

m1=2。

m2=2。

n1=50。

n2=50。

tempA=zeros(m1,n1-1>。

count=0。

fori=1:

n1

forj=1:

(i-1>

tempA(:

j>=A(:

j>。

end

forj=(i+1>:

n1

tempA(:

j-1>=A(:

j>。

end

[w,y0]=fisher((tempA.'>,BB>。

flag=classify_CH(A(1,i>,A(2,i>,w,y0>。

ifflag==1

count=count+1。

end

end

tempB=zeros(m2,n2-1>。

fori=1:

n2

forj=1:

(i-1>

tempB(:

j>=B(:

j>。

end

forj=(i+1>:

n2

tempB(:

j-1>=B(:

j>。

end

[w,y0]=fisher(AA,(tempB.'>>。

flag=classify_CH(B(1,i>,B(2,i>,w,y0>。

ifflag==2

count=count+1。

end

end

error_ratio=count/(n1+n2>

%使用留一法求测试样本

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

当前位置:首页 > 法律文书 > 判决书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1