⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fisher.m

📁 Fisher判别
💻 M
字号:
% Fisher线性判别

clc
clear
MALE = load('male.txt');
FEMALE = load('female.txt');
MALE=MALE(:,1:2);
FEMALE=FEMALE(:,1:2);
m1 = mean(MALE)';   % 各类样本均值向量
si1 = cov(MALE)*49;   % 样本类内离散度矩阵
cov1 = si1/50;
m2 = mean(FEMALE)';   % 各类样本均值向量
si2 = cov(FEMALE)*49;   % 样本类内离散度矩阵
cov2 = si2/50;
sw = si1 + si2;   % 总类内离散度矩阵
w = (inv(sw)*(m1-m2))';   % 最佳投影权向量
% 利用先验知识选定分界阈值点
my1 = mean(w*MALE');
my2 = mean(w*FEMALE');
y0 = (my1+my2)/2;

TEST1 = load('test1.txt');
C1 = TEST1(:,3)';
for i = 1:1:35
    x = TEST1(i,1:2)';
    y = w*x;
    if (y>y0)
        A1(i) = 0;
    else
        A1(i) = 1;
    end;
end;
 D1 = A1-C1;
 nnz(D1(:,1:20))
 nnz(D1(:,21:35))
% nnz(D1)

TEST2 = load('test2.txt');
C2 = TEST2(:,3)';
for i = 1:1:300
    x = TEST2(i,1:2)';
    y = w*x;
    if (y>y0)
        A2(i) = 0;
    else
        A2(i) = 1;
    end;
end;
 D2 = A2-C2;
 nnz(D2(:,1:50))
 nnz(D2(:,51:300))
% nnz(D1)

TEST3 = load('test3.txt');
C3 = TEST3(:,3)';
for i = 1:1:100
    x = TEST3(i,1:2)';
    y = w*x;
    if (y>y0)
        A3(i) = 0;
    else
        A3(i) = 1;
    end;
end;
 D3 = A3-C3;
 nnz(D3(:,1:50))
 nnz(D3(:,51:100))
% nnz(D3)

% px1 = TEST1(:,1);
% px2 = TEST1(:,2);
% plot(px1,px2,'*')
hold on
plot(MALE(:,1),MALE(:,2),'*')
plot(FEMALE(:,1),FEMALE(:,2),'O')
clear('x','y')
ezplot('-1260363355495563558841/144115188075855872000*x+509187399542439477641/144115188075855872000*y+509187399542439303721/144115188075855872000*y-1260363355495563493339/144115188075855872000*x+19145177403164224521564687/14411518807585587200000-10739685055000093/576460752303423488*x*y+8151688554223755/144115188075855872*x^2-10739685055000097/576460752303423488*y*x-2832113983076773/288230376151711744*y^2',[140,190],[30,100])
lx1 = 140:10:190;
lx2 = (y0-w(1)*lx1)/w(2);
plot(lx1,lx2,'r')
xlabel('身高'),ylabel('体重')
title('训练样本和求得的决策边界')
grid on

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -