Fisher的原理
其实就是将所有的样本投影到一个一维的线性空间,然后做分类。
第一步是求解最优的投影方向。
原理推导可能复杂些,但是根据结果的代码实现还是很容易的。
完整的代码:
Fisher分类器和Logistic回归:http://download.youkuaiyun.com/detail/lisy14/9845734
贝叶斯分类器:http://download.youkuaiyun.com/download/lisy14/9845739
这部分是主代码1
%函数作用:根据训练样本求出投影方向
%参数说明:w1是第一类的样本自变量,w2是第二类的样本自变量
function wk=myfisher(w1,w2)
[x1,y] = size(w1);
[x2,~] = size(w2);
u1=mean(w1);% wi类的样本均值
u2=mean(w2);
% 总类内散布矩阵
s1 = zeros(y);
s2 = zeros(y);
for qt = 1:x1
s1 = s1 + (w1(qt,:) - u1)'*(w1(qt,:) - u1);
end
for qt = 1:x2
s2 = s2 + (w2(qt,:) - u2)'*(w2(qt,:) - u2);
end
sw = s1 + s2;
%投影向量的计算公式,计算最优方向的直线
wk = inv(sw) * (u1-u2)';% 最优方向的特征向量 %
wk = wk/sqrt(sum(wk.^2)); % 特征向量单位化
如果有需要,这部分是样本的按照类别的划分代码
%将训练样本按照yTrain01分为两类w1,w2
a1=find(yTrain==0);
a2=find(yTrain);
w1=zeros(size(a1),10);