糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 用身高和/或体重数据进行性别分类

用身高和/或体重数据进行性别分类

时间:2020-09-22 12:47:17

相关推荐

用身高和/或体重数据进行性别分类

用身高和/或体重数据进行性别分类

摘要】根据身高和/或体重等数据,利用模式识别贝叶斯(bayes)分类器来对人的性别进行分类,做出函数图,使得我们容易分析这两者之间的异同。熟练运用matlab的相关知识,掌握最小错误率Bayes分类器的决策规则。

关键词:贝叶斯(bayes)分类器;matlab;决策规则。

Gender classification using height and/or weight data

Abstract:According to the data of height and / or weight, Bayesian (bayes) classifier isused to classify human gender and make function diagram, which makes it easy to analyze the similarities and differences between the two. Proficient in the use of matlab knowledge, grasp the minimum error rate Bayes classifier decision rules.

Key words:Bayesian (bayes) classifie、Fisher、matlab、Decision-making rules

1引言

我们根据身高和/或体重等数据,利用贝叶斯(Bayes)分类器实现对人的性别分类。

2贝叶斯分类器介绍

2.1贝叶斯分类器

分类有基于规则的分类(查询)和非规则分类(有指导学习),贝叶斯分类是非规则分类,它通过训练集(已分类的例子集)训练来归纳出分类器,并利用分类器对未分类的数据进行分类,用其基本思想是依据类的概率、概率密度,根据某种准则使用分类结果从统计上讲是最佳的。

3 实验原理

3.1最小错误率Bayes分类器的决策规则

如果在特征空间中观察到某一个(随机)向量x = ( x1 , x2 ,…, xd )T,已知类别状态的先验概率为:和类别的条件概率密度为,根据Bayes公式得到状态的后验概率 有:

基本决策规则:如果,则,将 x 归属后验概率最大的类别 。

4实验内容及要求

4.1实验对象

Datasetf1.TXT 女生的身高、体重数据

Datasetm1.TXT男生的身高、体重数据

----- 训练样本集

Dataset1.txt 328个同学的身高、体重、性别数据

Dataset2.txt 124个同学的身高、体重、性别数据

----- 测试样本集

4.2基本要求

4.2.1用Datasetf1.TXT和Datasetm1.TXT的数据作为训练样本集,建立Bayes分类器,用测试样本数据对该分类器进行测试。调整特征、分类器等方面的一些因素,考察它们对分类器性能的影响,从而加深对所学内容的理解和感性认识。(试验直接设计线性分类器的方法,与基于概率密度估计的贝叶斯分离器进行比较)

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

5 Bayes分类器的实验结果与分析

5.1对于Dataset1.txt 328个同学的身高、体重、性别数据

5.1.1测试样本集

A1、当先验概率为:男0.5,女0.5时:

身高分类错误个数: 15 身高分类错误率为: 12.10%

体重分类错误个数: 15 体重分类错误率为: 12.10%

5.1.2实验结果

A2、当先验概率为:男0.75,女0.25时:

身高分类错误个数: 19 身高分类错误率为: 15.32%

体重分类错误个数: 14 体重分类错误率为: 11.29%

5.2对于Dataset2.txt 124个同学的身高、体重、性别数据

5.2.1测试样本集:

B1、当先验概率为:男0.5,女0.5时:

身高分类错误个数: 16 身高分类错误率为: 12.90%

体重分类错误个数: 21 体重分类错误率为: 16.94%

5.2.2实验结果

B2、当先验概率为:男0.75,女0.25时:

身高分类错误个数: 31 身高分类错误率为: 25.00%

体重分类错误个数: 35 体重分类错误率为: 28.23%

5.3结果分析

Dataset1.txt样本数据集中,男女先验概率为(0.71vs0.29);Dataset2.txt样本数据集中,男女先验概率为(0.66vs0.34)。

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

6程序框图及实验代码

6.1程序框图

6.2Bayes分类器源程序实验代码:

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

7 总结

通过这次实验加,我对课上学习到的模式识别原理与应用有了一定的的理解,提高了动手实践能力。同时也加深了我对贝叶斯(bayes)公式的了解。熟练了matlab的相关知识掌握最小错误率Bayes分类器的决策规则

如果觉得《用身高和/或体重数据进行性别分类》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。