基于jupyter的Python学习---Python实现Fisher的判别推导
一、算法描述
fisher线性判别分析的基本思想:选择一个投影方向,将高维问题降低到一维问题进行解决,同时变换后的一维数据满足每一类内部的样本尽可能的聚集在一起,不同类的样本相隔尽可能的远。
Fisher线性判别分析,是通过给定的训练数据,确定投影方向W和阈值W0,即确定线性判别函数,然后根据线性判别函数,对测试数据进行测试,得到测试数据的类别。
(1)W的确定
线性判别函数的一半形式可表示为 g ( x ) = W T X + w 0 g(x)=W^TX+w_0 g(x)=WTX+w0 其中
X = ( x 1 x 2 ⋮ x d ) W = ( w 1 w 2 ⋮ w d ) X= \begin{pmatrix} x_1\\ x_2\\ \vdots\\ x_d\\ \end{pmatrix} W= \begin{pmatrix} w_1\\ w_2\\ \vdots\\ w_d\\ \end{pmatrix} X=⎝⎜⎜⎜⎛x1x2⋮xd⎠⎟⎟⎟⎞W=⎝⎜⎜⎜⎛w1w2⋮wd⎠⎟⎟⎟⎞
Fisher选择投影方向W的原则:即使原样本向量在该方向上的投影能兼顾类间分布尽可能分开,类内样本投影尽可能密集的要求。
(1)W的确定
各类样本均值向量 m i m_i mi
m i = 1 N i ∑ x e X i x , i = 1 , 2 m_i={1 \over N_i} \sum_{x_eX_i} x ,i=1,2 mi=Ni1xeXi∑x,i=1,2
样本类内离散度矩阵 S i S_i Si和总类内离散度矩阵 S w S_w S