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

上传人:b****6 文档编号:20265912 上传时间: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

,其中

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

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

xHAQX74J0X

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

LDAYtRyKfE

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

Zzz6ZB2Ltk

具体流程图如下:

四、实验结果及分析总结

1、得到结果如下表

以身高作为特征

h=4

估计方法

女生先验概率

男生先验概率

男生错误个数

女生错误个数

总错误

男生错误率

女生错误率

总错误率

Parzen窗法

0.25

0.75

22

8

30

16%

8.8%

10%

0.5

34

4

38

13.6%

8%

12.67%

80

2

82

32%

4%

27.33%

最大似然Bayes

20

6.667%

27

9%

60

20%

以身高与体重作为特征

h=7

7

29

14%

9.67%

40

15.2%

13.33%

46

48

18.4%

6

14

3.2%

12%

4.67%

3

32

11.6%

6%

10.67%

0.2

59

1

23.6%

2%

分析:

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

dvzfvkwMI1

2、得到结果如下

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

判别

对象

测试样本

10.8%

训练样本

12

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

rqyn14ZNXI

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

先验概略为0.5,0.5

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

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

错误率

81

28%

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

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('

\Users\xuyd\Desktop\homework\MALE.txt'

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('

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

i)是窗函数M2ub6vSTnP

end

p1=sum(1/VN1*pp'

y1=1/N1*p1。

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

forj=1:

N2

qq(j>

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

ifk<

=50

s(k,1>

=0。

%判为女生

girl=girl+1。

else

errorboy=errorboy+1。

elseifg<

ifk<

errorgirl=errorgirl+1。

else

=1。

%判为男生

boy=boy+1。

=-2。

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

bad=bad+1。

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窗法,贝叶斯分类器。

eUts8ZQVRd

sQsAEJkW5T

h1=7。

VN1=hn1^2。

h2=7。

VN2=hn2^2。

GMsIasNXkA

M

A=[X(k,1>

X(k,2>

]。

x=A。

pp=0。

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。

p1=1/VN1*pp'

qq=0。

forj=1:

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。

%用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(:

.'

%男生的类内离散度矩阵

l2

S2=S2+(B(:

-M2>

*((B(:

%女生的类内离散度矩阵

Sw=0.5*S1+0.5*S2。

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

w=inv(Sw>

*(M1-M2>

%两列

wT=w'

%wT就是使Fisher准则函数JF<

w)取极大值时的解,也就是d维X空间到1维Y空间的最好的投影方向lzq7IGf02E

Y1(i>

=wT(1,1>

*A(1,i>

+wT(1,2>

*A(2,i>

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

Y2(i>

*B(1,i>

*B(2,i>

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

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,'

请读入女生训练集'

fjnFLDa5Zo

[B1B2]=textread(fileAddrs,'

AA=[A1A2]。

BB=[B1B2]。

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

请读入测试集'

tfnNhnE6e5

[T1T2]=textread(fileAddrs,'

TT=[T1T2]。

T=TT'

[k3l3]=size(T>

50

y(k>

=wT*T(:

k>

ify(k>

y0

elseify(k>

fork=51:

300

errorboy=errorboy+1。

errorrate=error/l3

%画图

HbmVN777sL

V7l4jRB8Hs

x=A(1,i>

y=A(2,i>

%x是身高,y是体重

plot(x,y,'

R.'

holdon

x=B(1,i>

y=B(2,i>

G.'

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<

b1

a=a1。

else

a=b1。

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

ifa2>

b2

b=a2。

b=b2。

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

ifa3<

b3

c=a3。

c=b3。

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

ifa4>

b4

d=a4。

d=b4。

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

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>

/length(MA>

W1=-1/2*inv(a>

W2=-1/2*inv(b>

Ave1=(sum(FA'

Ave2=(sum(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>

value=2。

%表示样本是男生

value=1。

%表示样本是女生

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

[A1A2]=textread('

\Users\Administrator\Desktop\模式识别\homework\MALE.txt'

AVktR43bpw

[B1B2]=textread('

\Users\Administrator\Desktop\模式识别\homework\FEMALE.txt'

ORjBnOwcEd

m1=2。

m2=2。

n1=50。

n2=50。

tempA=zeros(m1,n1-1>

count=0。

n1

(i-1>

tempA(:

j>

=A(:

forj=(i+1>

:

j-1>

[w,y0]=fisher((tempA.'

BB>

flag=classify_CH(A(1,i>

A(2,i>

w,y0>

ifflag==1

count=count+1。

tempB=zeros(m2,n2-1>

n2

tempB(:

=B(:

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

flag=classify_CH(B(1,i>

B(2,i>

ifflag==2

error_ratio=count/(n1+n2>

%使用留一法求测试样本

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

当前位置:首页 > 自然科学 > 天文地理

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

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