模式识别大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
作业1 用身高和/或体重数据进行性别分类(一)
基本要求:
用FAMALE.TXT和MALE.TXT的数据作为训练样本集,建立Bayes分类器,用测试样本数据对该分类器进行测试。调整特征、分类器等方面的一些因素,考察它们对分类器性能的影响,从而加深对所学内容的理解和感性认识。
具体做法:
1.应用单个特征进行实验:以(a)身高或者(b)体重数据作为特征,在正态分布假设下利用最大似然法或者贝叶斯估计法估计分布密度参数,建立最小错误率Bayes分类器,写出得到的决策规则,将该分类器应用到测试样本,考察测试错误情况。在分类器设计时可以考察采用不同先验概率(如0.5对0.5, 0.75对0.25, 0.9对0.1等)进行实验,考察对决策规则和错误率的影响。
图1-先验概率0.5:0.5分布曲线图2-先验概率0.75:0.25分布曲线
图3--先验概率0.9:0.1分布曲线图4不同先验概率的曲线
有图可以看出先验概率对决策规则和错误率有很大的影响。
程序:bayesflq1.m和bayeszcx.m
2.应用两个特征进行实验:同时采用身高和体重数据作为特征,分别假设二者相关或不相
关(在正态分布下一定独立),在正态分布假设下估计概率密度,建立最小错误率Bayes 分类器,写出得到的决策规则,将该分类器应用到训练/测试样本,考察训练/测试错误情况。比较相关假设和不相关假设下结果的差异。在分类器设计时可以考察采用不同先验概率(如0.5 vs. 0.5, 0.75 vs. 0.25, 0.9 vs. 0.1等)进行实验,考察对决策和错误率的影响。
训练样本female来测试
图1先验概率0.5 vs. 0.5 图2先验概率0.75 vs. 0.25
图3先验概率0.9 vs. 0.1 图4不同先验概率
对测试样本1进行试验得图
对测试样本2进行试验
有图可以看出先验概率对决策规则和错误率有很大的影响。程序bayesflq2.m和bayeszcx2.m 3.自行给出一个决策表,采用最小风险的Bayes决策重复上面的某个或全部实验。
W1 W2
W1 0 0.7
W2 0.3 0
close all;
clear all;
X=120:0.1:200; %设置采样范围及精度pw1=0.9;pw2=0.1; %设置先验概率sample1=textread('FEMALE.txt') %读入样本
samplew1=zeros(1,length(sample1(:,1)));
u1=mean(sample1(:,1));
m1=std(sample1(:,1));
y1=normpdf(X,u1,m1); %类条件概率分布figure(1);
subplot(2,1,1);
plot(X,y1);
title('F身高类条件概率分布曲线');
sample2=textread('MALE.txt') %读入样本
samplew2=zeros(1,length(sample2(:,1)));
u2=mean(sample2(:,1));
m2=std(sample2(:,1));
y2=normpdf(X,u2,m2); %类条件概率分布subplot(2,1,2);
plot(X,y2);
title('M身高类条件概率分布曲线');
P1=pw1*y1./(pw1*y1+pw2*y2);
P2=pw2*y2./(pw1*y1+pw2*y2);
figure(2);
subplot(2,1,1);
plot(X,P1);
title('F身高后验概率分布曲线');
subplot(2,1,2);
plot(X,P2);
title('M身高后验概率分布曲线');
P11=pw1*y1;
P22=pw2*y2;
figure(3);
subplot(3,1,1);
plot(X,P11);
subplot(3,1,2);
plot(X,P22);
subplot(3,1,3);
plot(X,P11,X,P22);
sample=textread('all sample.txt') %读入样本[result]=bayes(sample1(:,1),sample2(:,1),pw1,pw2);
%bayes分类器
function [result] =bayes(sample1(:,1),sample2(:,1),pw1,pw2);
error1=0;
error2=0;
u1=mean(sample1(:,1));
m1=std(sample1(:,1));
y1=normpdf(X,u1,m1); %类条件概率分布u2=mean(sample2(:,1));
m2=std(sample2(:,1));
y2=normpdf(X,u2,m2); %类条件概率分布P1=pw1*y1./(pw1*y1+pw2*y2);
P2=pw2*y2./(pw1*y1+pw2*y2);
for i = 1:50
if P1(i)>P2(i)
result(i)=0;
pe(i)=P2(i);
else
result(i)=1;
pe(i)=P1(i);
end
end
for i=1:50
if result(k)==0
error1=error1+1;
else result(k)=1
error2=error2+1;
end
end
ratio = error1+error2/length(sample); %识别率,百分比形式
sprintf('正确识别率为%.2f%%.',ratio)
作业2 用身高/体重数据进行性别分类(二)
基本要求:
试验直接设计线性分类器的方法,与基于概率密度估计的贝叶斯分离器进行比较。
具体做法:
同时采用身高和体重数据作为特征,用Fisher线性判别方法求分类器,将该分类器应用到训练和测试样本,考察训练和测试错误情况。将训练样本和求得的决策边界画到图上,同时把以往用Bayes方法求得的分类器也画到图上,比较结果的异同。
解答:
Clc
clear all
sample1=textread('FEMALE.txt') %读入样本
sample2=textread('MALE.txt') %读入样本
[length1,width1]=size(sample1);
[length2,width2]=size(sample2);
One1 = ones(length1, 1);
One2 = ones(length2, 1);
plot(sample1(:,1), sample1(:,2), 'r*',sample2(:,1), sample2(:,2), 'bo')