fisher算法分类,请问怎么用matlab实现
发布网友
发布时间:2022-04-25 02:39
我来回答
共1个回答
热心网友
时间:2023-10-21 19:17
fisher算法分类,请问怎么用matlab实现
clear all;
load FEMALE.txt;
load MALE.txt;
FEMALE=FEMALE'; %特征为列向量
MALE=MALE';
fid=fopen('test1.txt','r');
test1=fscanf(fid,'%f %f %c',[3,inf]);
test=test1';
fclose(fid);
FS=[0 0;0 0];
MS=[0 0;0 0];
Fmean = mean(FEMALE')';
Mmean = mean(MALE')';
figure;
for i=1:50
FS1=(FEMALE(:,i)-Fmean)*(FEMALE(:,i)-Fmean)';
MS2=(MALE(:,i)-Mmean)*(MALE(:,i)-Mmean)';
FS = FS1+FS;
MS = MS2+MS
end;
SW=FS+MS;
Sb=(Fmean-Mmean)*(Fmean-Mmean)';
w=inv(SW)*(Fmean-Mmean);
mu1=w'*Fmean;
mu2=w'*Mmean;
b=(mu1+mu2)/2;
for i=1:35
if (test(i,3)==102)
plot(test(i,1),test(i,2),'r+');
end;
if (test(i,3)==109)
plot(test(i,1),test(i,2),'k*');
end;
hold on;
end;
x=test(:,1);
y=(b-w(1,1)*x)/w(2,1);
plot(x,y);
title('Fisher方法求分界线');
xlabel('身高(cm)'),ylabel('体重(kg)');