用身高和体重数据进行性别分类的实验报告Word文档格式.docx
《用身高和体重数据进行性别分类的实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《用身高和体重数据进行性别分类的实验报告Word文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
根据贝叶斯决策规则
知
如果
,否则,
流程图如下:
2、要求是同时采用身高和体重数据作为特征,用Fisher线性判别方法求分类器,将该分类器应用到训练和测试样本,考察训练和测试错误情况。
说明,取男生和女生的先验概率分别为0.5,0.5。
在设计贝叶斯分类器时,首先求各类样本均值向量,及
,然后求各个样本的来内离散度矩阵,及
,再求出样本的总类内离散度,及
,根据公式
求出把二维X空间投影到一维Y空间的最好的投影方向。
再求出一维Y空间中各类样本均值
,其中
本次实验的分界阈值我们用如下方法得到:
最后,将测试样本中的值代入,求出y,并将其与y0来进行比较来分类。
根据课本对Fisher线性判别法的介绍,得到的算法流程图如下:
这里我们选择Fisher线性判别法,用留一法来估计它在训练集上的错误率,并将结果与Fisher线性判别法对测试集进行判别时得到的错误率进行比较。
具体流程图如下:
四、实验结果及分析总结
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这种非参数估计方法来进行分类时,最大似然估计判别的错误率低。
2、得到结果如下
(1)、用Fisher线性判别方法求分类器,将分类器应用到训练和测试样本上,比较其错误率
判别
对象
测试样本
10.8%
训练样本
12
用训练样本得到的分类器测试测试样本时错误率低,测试结果较好,但测试训练样本时,其错误率较高,测试结果不好。
(2)、将训练样本和求得的决策边界画到图上
先验概略为0.5,0.5
从图中我们可以直观的比较出对训练样本Fisher判别比最大似然Bayes判别效果更好。
3、留一法测试结果如下:
错误率
81
28%
用留一法在训练样本机上估计错误率时,错误率小于它在测试样本集上得到的错误率,且留一法在测试样本集上女生错误个数远低于男生错误个数。
五、体会
这次实验,我们组用了接近三天的时间,首先,我们对题目要求进行认真分析,在确保对题目完全理解的基础上,开始一步一步分析,求解。
对每个小题,及其每一问,我们都经过查书,查资料,编代码这几个步骤,仔细分析每一步算法,得出流程图。
经过第一次作业的编程,本次编程我们都觉得轻松了很多,但还会出现一些细节上的错误,不过,这些在我们经过不断的调试之后都会被发现并解决。
总体而言,本次试验,让我们对Parzen窗法求类条件概率密度,以及Fisher线性判别法都有了更大的了解。
代码:
%特征是身高,先验概率为0.5、0.5时用Parzen窗法,贝叶斯分类器。
clc;
clearall;
[FHFW]=textread('
C:
\Users\xuyd\Desktop\homework\FEMALE.txt'
'
%f%f'
);
[MHMW]=textread('
\Users\xuyd\Desktop\homework\MALE.txt'
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'
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)是窗函数
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));
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<
errorgirl=errorgirl+1;
else
s(k,1)=1;
%判为男生
boy=boy+1;
s(k,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窗法,贝叶斯分类器。
h1=7;
VN1=hn1^2;
h2=7;
VN2=hn2^2;
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));
pp=pp+n;
p1=1/VN1*pp'
;
qq=0;
ma=[MA(j,1)MA(j,2)];
m=1/sqrt(2*pi)*exp