基于Fisher准则的线性分类器设计

一、设计目的

本设计旨在进一步了解分类器的设计概念,能够根据自己的设计对线性分类器有更深刻地认识,理解Fisher准则方法确定最佳线性分界面方法的原理。

二、算法原理

线性判别函数的一般形式可表示成
在这里插入图片描述

根据Fisher选择投影方向W的原则,即使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求,用以评价投影方向W的函数为:
在这里插入图片描述

在这里插入图片描述

使用Fisher准则方法确定最佳线性分界面的方法是一个著名的方法,尽管提出该方法的时间比较早,仍见有人使用。

三、设计内容

已知有两类数据和,即 Female.txt和Male.txt,进行Fisher判别分类,用test1.txt和test2.txt中的样本进行测试。
数据的样本点分布如下图:
在入图片描述
图 1:样本点分布图

四、设计要求

1)把数据作为样本,根据Fisher选择投影方向的原则,使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求,求出评价投影方向的函数,并在图形表示出来。并在实验报告中表示出来,并求使取极大值的。用matlab完成Fisher线性分类器的设计,程序的语句要求有注释。
2)根据上述的结果并判断test2.txt中第5、第10、第15、第22、第32个样本,分别属于哪个类别,并画出数据分类相应的结果图,要求画出其在上的投影。
3)回答如下问题,分析一下的比例因子对于Fisher判别函数没有影响的原因

五、算法步骤

在这里插入图片描述

六、MATLAB源代码

%读入男生的身高、体重
male = importdata(‘MALE.TXT’) ;
%读入女生的身高、体重
female = importdata(‘FEMALE.TXT’);

m1=mean(male);
m2=mean(female);

test1 = ‘.\test1.txt’;
[data1,data2,data3]=textread(test1,’%n%n%s’);
pos = find(strcmp(data3,‘m’));
neg = find(strcmp(data3,‘f’));
%画图
figure;
hold on;
plot(data1(pos,1),data2(pos,1),‘k+’); %男生样本
plot(data1(neg,1),data2(neg,1),‘ko’); %女生样本
legend(‘男生’,‘女生’);title(‘test1样本点分布’);
xlabel(‘身高’);ylabel(‘体重’);

test2 = ‘.\test2.txt’;
[data11,data22,data33]=textread(test2,’%n%n%s’);
pos1 = find(strcmp(data33,‘M’));
neg1 = find(strcmp(data33,‘F’));
%画图
figure(2);
hold on;
plot(data11(pos1,1),data22(pos1,1),‘k+’); %男生样本
plot(data11(neg1,1),data22(neg1,1),‘ko’); %女生样本
legend(‘男生’,‘女生’);title(‘test2样本点分布’);
xlabel(‘身高’);ylabel(‘体重’);

figure(3)
hold on;
plot(male(:,1),male(:,2),‘b*’); %男生样本
plot(female(:,1),female(:,2),‘r+’); %女生样本
legend(‘男生’,‘女生’);title(‘投影前图像’);
xlabel(‘身高’);ylabel(‘体重’);

s1=zeros(2,2);
for i=1:size(male,1)
s1 = s1 + (male(i,:)-m1)’*(male(i,:)-m1);
end

s2=zeros(2,2);
for i=1:size(female,1)
s2 = s2 + (female(i,:)-m2)’*(female(i,:)-m2);
end

sw=s1+s2;

m1=m1’;
m2=m2’;

w=inv(sw)*(m1-m2);
w=w/sqrt(w’*w)

w0=w’*(m1+m2)/2

g1 = w’*male’;
g2 = w’*female’;

r1=ones(size(g1));
r2=ones(size(g2));

figure(4);
hold on
plot(g1,r1,‘b*’)%男生样本的投影结果
plot(g2,r2,‘r+’)%女生样本的投影结果

t =[156 45; 160 47; 155 60;160 45;173 54];
yt=w’t’% - w0;
rt1=1.1
ones(size(yt));

plot(yt(find(yt>w0)),rt1(yt>w0),‘b+’)
plot(yt(find(yt<w0)),rt1(yt<w0),‘r*’)

a=axis();
a(3)= 0.99;
a(4)= 1.12;
axis(a)

plot([w0 w0],[a(3) a(4)],‘r’)

legend(‘男生样本的投影结果’,‘女生样本的投影结果’,‘测试数据中的第一类’,‘测试数据中的第二类’,‘两类数据投影的平均值’);

七、结果展示

1.投影前后图形显示
在这里插入图片描述
在这里插入图片描述

2、参数
决策面向量:W =[0.7817,0.6236 ]
阈值:yuzhi= 168.4505
样本点分类:
150.0115 154.3856 158.5842 153.1383 168.9133
在这里插入图片描述

八、实验分析

1.分析一下的比例因子对于Fisher判别函数没有影响的原因
设乘上一比例因子α,则投影后即为,相当于每一个样本都乘以比例因子α,所以对Fisher判别函数没有影响。
2.Fisher判别的直观解释是,把待决策的样本投影到Fisher判别的方向上,通过与两类均值投影的平分点相比较做出分类决策。在先验概率相同的情况下,以该平分点为两类的分类点;在先验概率不同时,分类点向先验概率小的一侧偏移。
3.Fisher判别并不对样本的分布做任何假设。但在很多情况下,当样本维数比较高且样本数也比较多时,投影到一维空间后样本接近正态分布。这时可以在一维空间中用样本拟合正态分布,用得到的参数来确定分类阈值。

  • 4
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远方上&肖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值