模式识别实验报告-fisher分类器


一、实验内容

已知有两类数据和,即 Female.txt和Male.txt,进行Fisher判别分类,用test1.txt和test1.txt中的样本进行测试。

二、实验要求

把数据作为样本,根据Fisher选择投影方向的原则,使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求,求出评价投影方向的函数,并在图形表示出来。并在实验报告中表示出来,并求使取极大值的。用matlab完成Fisher线性分类器的设计,程序的语句要求有注释。

三、实验结果

clc;clear all;
male_data = importdata('D:\Desktop\模式识别\shiyanyi\MALE.TXT');
female_data = importdata('D:\Desktop\模式识别\shiyanyi\FEMALE.TXT');
x1=male_data(:,1);%男生第一列
y1=male_data(:,2);%男生第二列
%disp(x1);
x2=female_data(:,1);
y2=female_data(:,2);
 
 
m1 = ones(2,50);%两行五十列 存储男生信息
m2 = ones(2,50);
for i = 1:50
    m1(1,i) = x1(i);
    m1(2,i) = y1(i);
end
 
for i = 1:50
 
    m2(1,i) = x2(i);
    m2(2,i) = y2(i);
end
 
%类均值向量M1 M2
M1=[mean([m1]')]'
M2=[mean([m2]')]'
 
%类内离散度矩阵 S1 S2
S1=zeros(2,2);  
for i=1:50 %类内离散度计算
    S1=S1+(m1(:,i)-M1)*(m1(:,i)-M1)';
end
S2=zeros(2,2);  
for i=1:50 
    S2=S2+(m2(:,i)-M2)*(m2(:,i)-M2)';
end  
 
%总类内散度矩阵  
Sw=zeros(2,2);  
Sw=S1+S2;  
 
%样本类间散度矩阵Sb  
Sb=zeros(2,2);  
Sb=(M1-M2)*(M1-M2)';  
 
 
%最优解W    
W=Sw^-1*(M1-M2)  
%将W变为单位向量以方便计算投影  
W=W/sqrt(sum(W.^2)); 
 
%计算一维Y空间中的各类样本均值m11及m22  
m11=W'*M1;
m22=W'*M2;
 
%计算w0
W0=-1/2*(m11+m22);
 
X1=[x1*W(1)+y1*W(2)]';  
X2=[x2*W(1)+y2*W(2)]';%计算投影得到的长度  
XX1=[W(1)*X1;W(2)*X1;];  
XX2=[W(1)*X2;W(2)*X2;];%得到新坐标  
%绘制样本点  
figure(1) 
axis([50 200 0 100]);
plot(x1,y1,'r*') %第一类  
hold on  
axis([50 200 0 100]);
plot(x2,y2,'bp') %第二类
 
 
legend('第一类点','第二类点')  
title('Fisher线性判别函数')  
W1=200*W;  
%画出最佳方向  
line([-W1(1),W1(1)],[-W1(2),W1(2)],'color','b');  

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值