精华内容
下载资源
问答
  • 上因为最早由[Fisher, 1936]提出,亦称“Fisher判别分析”。 LDA的基本思想:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影...
  • 距离判别法以及fisher判别法等的讲解与程序实现(matlab)
  • 多分类核Fisher判别分析法,里面我给了一个例子,用的是鸢尾花数据集,四维三类,降到二维,核函数有高斯核,线性核,多项式核等,需要自取
  • 文章目录一、线性分类的数学基础与应用1、Fisher基本介绍2、Fisher判别思想3、举例二、Fisher判别的推导(python)1、代码2、代码结果三、Fisher分类器1、定义2、scikit-learn中LDA的函数的代码测试3、监督降维技术...
  • Fisher判别matlab实现

    2018-12-08 12:45:55
    Fisher线性判别Fisher Linear Discrimination,FLD),也称线性判别式分析(Linear Discriminant Analysis, LDA)。FLD是基于样本类别进行整体特征提取的有效方法。它在使用PCA方法进行降维的基础上考虑到训练样本的...
  • 目录线性分类的数学基础python代码完成Fisher判别的推导Iris数据集数据可视化relplotjointplotdistplotboxplotviolinplotpairplot构建模型 线性分类的数学基础 1.假设对一模式记抽取n个特征,表示为: X=(x1,x2,x3,…,...
  • 目录一、线性分类器理论基础二、Fisher判别1.算法描述2.推导过程3.python代码实现算法4.类间散度矩阵和类内散度矩阵4.1.类内散度矩阵4.2.类间散度矩阵4.3.总体散度矩阵三、Iris数据集实战1.数据可视化1.1 relplot1.2...
  • Fisher判别

    千次阅读 2020-04-07 22:08:43
    文章目录距离判别法欧氏距离马氏距离关于协方差矩阵Fisher判别分析应用步骤:核心思想具体步骤解释Fisher准则函数:投影降维组间偏差组内偏差求出最优解 距离判别法 距离判别法首先根据已知分类的数据,分别计算出...

    距离判别法

    距离判别法首先根据已知分类的数据,分别计算出各类的重心。再根据新个体到每类的距离(即新个体与各类重心的距离,可采用欧氏距离或者马氏距离等等),根据最短的距离确定分类情况。
    问题描述:
    在这里插入图片描述

    欧氏距离

    在这里插入图片描述
    Note: 第一个等式是矩阵的写法。

    马氏距离

    在这里插入图片描述

    Note: 矩阵的写法。

    关于协方差矩阵

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

    协方差矩阵:对n个维度,任意两个维度都计算一个协方差,组成矩阵

    具体见协方差矩阵

    Fisher判别分析

    应用步骤:

    1. 把来自2类的训练样本集划分为2个子集 X 1 , X 2 , i = 1 , 2 X_1,X_2, i=1,2 X1,X2,i=1,2
    2. 计算各类的均值向量 m 1 , m 2 m_1,m_2 m1,m2(投影前)
    3. 得到投影后均值向量 μ 1 , μ 2 \mu_1,\mu_2 μ1,μ2
    4. 计算各类的类内离散度矩阵 S i S_i Si(投影前)
    5. 计算投影之后的离散度矩阵 σ i 2 \sigma_i^2 σi2
    6. 计算类内总离散矩阵 S t S_t St
    7. 求出 w o p = S t − 1 ( m 1 − m 2 ) w_{op}=S_t^{-1}(m_1-m_2) wop=St1(m1m2)
    8. y = w o p T x y=w_{op}^Tx y=wopTx
    9. 确定阈值 w 0 w_0 w0比较 y y y值与阈值 w 0 w_0 w0 的大小,得出其分类。

    核心思想

    Fisher判别的基本思想:
    希望投影后的一维数据满足:

    • 两类之间的距离尽可能远; 
    • 每一类自身尽可能紧凑。

    具体步骤解释

    Fisher准则函数:

    在这里插入图片描述

    我们的目标是求出 y = w T x y=w^Tx y=wTx 这条直线。因此求 w w w
    所以我们投影降维,将均差、离散度写成有关 w w w的函数。
    我们希望类间距大,类内小;所以,目标求 w w w为多少时,式子达到最大值。

    投影降维

    给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、不同类样例的投影点尽可能远离。在对新样本进行分类时,将其投影到同样的这条直线上,再根据新样本投影点的位置来确定它的类别
    在这里插入图片描述

    y = w T x y=w^Tx y=wTx 就是要投影到的直线

    组间偏差

    ( μ 1 − μ 2 ) 2 = ( w T m 2 − w T m 1 ) 2 (\mu_1-\mu_2)^2=(w^Tm_2-w^Tm_1)^2 (μ1μ2)2=(wTm2wTm1)2
    将原始空间的均值m1,m2投影后( μ 1 = w T m 1 \mu_1=w^Tm_1 μ1=wTm1)得到在直线上的 μ 1 \mu_1 μ1 μ 2 \mu_2 μ2

    组内偏差

    按照方差分析里的思想,应该把各组内的偏差相加,再把各组的偏差总和相加。
    在这里插入图片描述

    离散度矩阵定义为:
    在这里插入图片描述
    各组内的偏差相加: 样本与均值差距在这里插入图片描述

    因此, J F ( w ) J_F(w) JF(w)下面的式子:
    σ 1 2 + σ 2 2 = w T S 1 w + w T S 2 w = w T ( S 1 + S 2 ) w \sigma_1^2+\sigma_2^2=w^TS_1w+w^TS_2w=w^T(S_1+S_2)w σ12+σ22=wTS1w+wTS2w=wT(S1+S2)w

    各组的偏差总和相加
    在这里插入图片描述

    求出最优解

    最大化上述式子得到当前 w o p w_{op} wop
    在这里插入图片描述

    展开全文
  • python代码完成Fisher判别的推导一、Fisher算法的主要思想二、Fisher数学算法步骤①计算各类样本均值向量mim_imi​,mim_imi​是各个类的均值,NiN_iNi​是wiw_iwi​类的样本个数。②计算样本类内离散度矩阵SiS_iSi​...
  • %%使用fisher判别给XOR问题分类 使用fisher判别给XOR问题分类
  • 本文基于增强型Fisher判别准则(EFDC),提出了一种新的特征提取方法,称为零空间多样性Fisher判别分析(NSDFDA),用于人脸识别。 提出了基于新优化准则的NSDFDA,这意味着可以在类内散点的零空间中计算所有判别...
  • Fisher判别分析详解

    万次阅读 多人点赞 2019-05-16 13:24:56
    Fisher判别分析 将高维度空间的样本投影到低维空间上,使得投影后的样本数据在新的子空间上有最小的类内距离以及最大的类间距离,使得在该子空间上有最佳的可分离性 可以看出右侧投影后具有更好的可分离性。 Fisher...

    Fisher判别分析

    将高维度空间的样本投影到低维空间上,使得投影后的样本数据在新的子空间上有最小的类内距离以及最大的类间距离,使得在该子空间上有最佳的可分离性
    在这里插入图片描述
    可以看出右侧投影后具有更好的可分离性。

    Fisher判别分析和PCA差别

    刚学完感觉两个很类似,实际上两个方法是从不同的角度来降维。

    在这里插入图片描述
    PCA是找到方差尽可能大的维度,使得信息尽可能都保存,不考虑样本的可分离性,不具备预测功能。
    LAD(线性判别分析) 是找到一个低维的空间,投影后,使得可分离性最佳,投影后可进行判别以及对新的样本进行预测。

    Fisher判别详解

    Fisher判别分析是要实现有最大的类间距离,以及最小的类内距离
    在这里插入图片描述
    用二分类来分析,设样本数据集为 D = { ( X , Y ) } , X i 是 第 i 类 样 本 的 集 合 , i ∈ {   0 , 1 } D=\{(X,Y)\},X_i是第i类样本的集合,i\in\{\ 0,1\} D={(X,Y)}Xiii{ 0,1} ,要找的最佳投影为 W W W

    μ i \mu_i μi为第i类样本质心, N i N_i Ni为第i类的数量 μ i = 1 N i ∑ x ∈ X i x \mu_i=\frac{1}{N_i}\sum_{x\in X_i} x μi=Ni1xXix

    1. 最大的类间距离
      即要投影后两个样本的质心离得越远越好,那么就能得到
      J 0 = ( W T μ 1 − W T μ 0 ) 2 = ( W T ( μ 1 − μ 0 ) ) 2 = ( W T ( μ 1 − μ 0 ) ) ( W T ( μ 1 − μ 0 ) ) T = W T ( μ 1 − μ 0 ) ( μ 1 − μ 0 ) T W J_0=(W^T\mu_1-W^T\mu0)^2=(W^T(\mu_1-\mu0))^2=(W^T(\mu_1-\mu0))(W^T(\mu_1-\mu0))^T=W^T(\mu_1-\mu0)(\mu_1-\mu0)^TW J0=(WTμ1WTμ0)2=(WT(μ1μ0))2=(WT(μ1μ0))(WT(μ1μ0))T=WT(μ1μ0)(μ1μ0)TW
      S 0 = ( μ 1 − μ 0 ) ( μ 1 − μ 0 ) T S_0=(\mu_1-\mu0)(\mu_1-\mu0)^T S0=(μ1μ0)(μ1μ0)T ,那么 J 0 = W T S 0 W J_0=W^TS_0W J0=WTS0W
    2. 最小的类内距离
      即要使得投影后同一类的样本点尽可能聚拢在一起,离质心越近越好。
      J 1 = ∑ x ∈ X i ( W T x − W T u i ) 2 = ∑ x ∈ X i ( W T ( x − u i ) ) ( W T ( x − u i ) ) T = ∑ x ∈ X i W T ( x − u i ) ( x − u i ) T W J1=\sum_{x\in X_i} (W^Tx-W^Tu_i)^2=\sum_{x\in X_i} (W^T(x-u_i))(W^T(x-u_i))^T=\sum_{x\in X_i} W^T(x-u_i)(x-u_i)^TW J1=xXi(WTxWTui)2=xXi(WT(xui))(WT(xui))T=xXiWT(xui)(xui)TW
      S 1 = ∑ x ∈ X i ( x − u i ) ( x − u i ) T S_1=\sum_{x\in X_i}(x-u_i)(x-u_i)^T S1=xXi(xui)(xui)T,那么 J 1 = W T S 1 W J1=W^TS_1W J1=WTS1W

    那么我们现在要使得 J 0 J0 J0尽可能大, J 1 J_1 J1尽可能小,那么就是最大化 J = J 0 J 1 = W T S 0 W W T S 1 W J=\frac{J_0}{J_1}=\frac{W^TS_0W}{W^TS_1W} J=J1J0=WTS1WWTS0W

    分式上下都有W,那么W和 α W \alpha W αW效果是一样的,不妨令 W T S 1 W = 1 W^TS_1W=1 WTS1W=1,那么优化条件变成
    J = W T S 0 W , s . t . : W T S 1 W = 1 J=W^TS_0W,s.t. :W^TS_1W=1 J=WTS0W,s.t.:WTS1W=1

    拉格朗日乘子法求解, L ( W , λ ) = W T S 0 W − λ ( W T S 1 W − 1 ) L(W,\lambda)=W^TS_0W-\lambda(W^TS_1W-1) L(W,λ)=WTS0Wλ(WTS1W1)
    d L = ( d w ) T S 0 W + W T S 0 d W − λ ( ( d w ) T S 1 W + W T S 1 d W ) dL=(dw)^TS_0W+W^TS_0dW-\lambda((dw)^TS_1W+W^TS_1dW) dL=(dw)TS0W+WTS0dWλ((dw)TS1W+WTS1dW)
    = W T S 0 T d W + W T S 0 d W − λ ( W T S 1 T d W + W T S 1 d W ) =W^TS_0^TdW+W^TS_0dW-\lambda(W^TS_1^TdW+W^TS_1dW) =WTS0TdW+WTS0dWλ(WTS1TdW+WTS1dW)
    = ( 2 W T S 0 − 2 λ W T S 1 ) d W =(2W^TS_0-2\lambda W^TS_1)dW =(2WTS02λWTS1)dW

    运算过程是用到矩阵求导, S 0 T = S 0 S_0^T=S_0 S0T=S0
    那么 ∂ L ∂ W = ( 2 W T S 0 − 2 λ W T S 1 ) T = 2 S 0 W − 2 λ S 1 W \frac{\partial L}{\partial W}=(2W^TS_0-2\lambda W^TS_1)^T=2S_0W-2\lambda S_1W WL=(2WTS02λWTS1)T=2S0W2λS1W ,导数为0处, S 0 W = λ S 1 W S_0W=\lambda S_1W S0W=λS1W
    S 1 S_1 S1可逆的时候, λ W = S 1 − 1 S 0 W \lambda W=S_1^{-1}S0W λW=S11S0W,那么最优的 W W W即为 S 1 − 1 S 0 S_1^{-1}S_0 S11S0的最大的特征向量。
    如果要将 X ∈ R n X\in R^n XRn投影到 R d ( d &lt; n ) R^d (d&lt;n) Rd(d<n)的子空间中,则取前d个特征向量。

    注意点:

    1.LDA处理后的维度要小于类别数C,Sb的秩肯定小于等于C-1。
    2.Sw矩阵不可逆情况很多,可以先用PCA处理成C-1维后再用LDA,效果挺好的
    3.多分类情况下Sb用全局离散度矩阵减去类内离散度矩阵

    参考博客:

    线性分类器之Fisher线性判别
    线性判别分析(Linear Discriminant Analysis)(一)
    数模系列(7):Fisher判别分析(Fisher Discriminant Analysis)

    展开全文
  • 费希尔判别法matlab

    2013-06-17 10:34:49
    matlab实现的费希尔距离判别法,课程设计使用
  • Fisher判别分析法在判别混合水时,只能将此确定为最相像的某一分组,从而发生误判,因此在Fisher判别分析理论的基础上引入了质心距评价法,剔除可能为混合水样的样本数据,可以提高判别结果的准确率。为此选取13种水化学...
  • Fisher判别法的MATLAB程序

    千次阅读 2020-11-18 13:47:30
    % dclass作为两个模式类的距离判别分析 % 语法[COFEE,DIST,CLASS]=dclass(X1,X2,X) % x1,x2——分别为类1、类2的训练样本“样品×变量”矩阵 % x——为待判样品的“样品×变量”矩阵 % COEFF——判别函数的系数向量 ...

    多元统计回归分析

    在这里插入图片描述

    function [COEFF,DIST,CLASS] = dclass(X1,X2,X)
    %    dclass作为两个模式类的距离判别分析
    %    语法[COFEE,DIST,CLASS]=dclass(X1,X2,X)
    %    x1,x2——分别为类1、类2的训练样本“样品×变量”矩阵
    %    x——为待判样品的“样品×变量”矩阵
    %    COEFF——判别函数的系数向量
    %    CLASS——待判样品的分类
    [N1,~]=size(X1);
    [N2,~]=size(X2);
    [N,~]=size(X);
    MEANX1=mean(X1);
    MEANX2=mean(X2);
    COVX1=(N1-1)*cov(X1);
    COVX2=(N2-1)*cov(X2);
    MEAN=(MEANX1+MEANX2)./2;
    COV=(COVX1+COVX2)./(N1+N2-2);
    COEFF=inv(COV)*(MEANX1-MEANX2)';
    DIST=[];
    CLASS=[];
    for byk=1:N
        w=(X(byk,:)-MEAN)*COEFF;
        if w>0
            r=1;
        else
            r=2;
        end
        DIST=[DIST,w];
        CLASS=[CLASS,r];
    end
    COEFF=COEFF';
    end
    
    

    实验结果

    > clear all; clc; X1=[21.3  124.89 35.43 73.98 93.01  20.58 43.97 433.73
    >     21.13 168.69 40.81 70.12 74.32  15.46 50.9  422.74
    >     19.96 142.24 43.33 50.74 101.77 12.92 53.44 394.55]; X2=[21.5 122.39 29.08 51.64	55.04 11.3	54.88 288.13
    >     18.25	90.21	24.45	32.44	62.48	7.45	47.5	178.84
    >     21.84	66.38	18.05	31.32	74.48	8.19	34.97	177.45
    >     21.37	67.08	20.28	35.27	81.07	10.94	39.46	182.2
    >     22.74	115.88	28.21	42.44	58.07	9.63	48.65	194.85
    >     20.22	88.94	18.54	35.63	65.72	8.81	50.29	186.52
    >     21.33	75.5	14	    29.56	69.29	8.24	42.08	165.9
    >     18.61	122.51	27.07	42.5	63.47	15.38	36.14	240.92
    >     19.61	107.13	32.85	35.77	61.34	7.53	34.6	142.23
    >     25.56	171.65	22.3	40.53	57.13	12.6	54.03	225.08
    >     18.75	104.68	15.55	35.61	51.8	11.18	36.27	142.72
    >     18.27	88.34	19.07	43.19	72.97	12.59	42.16	200.18
    >     19.07	73.18	18.01	29.38	64.51	8.91	38.14	155.45
    >     18.76	102.67	21.87	30.47	64.33	11.99	42.14	168.17
    >     20.25	104.45	20.72	38.15	62.98	12.67	39.16	213.56
    >     18.7	131.35	11.69	32.06	41.54	10.84	42.77	178.51
    >     16.16	139.92	12.98	23.58	24.87	10.76	32.35	144.21
    >     18.18	120.39	26.18	37.94	68.16	11.64	38.48	246.37
    >     18.53	109.95	21.49	33.04	50.98	10.88	33.96	183.85
    >     18.33	92.43	25.38	32.19	56.32	14	    38.57	144.82
    >     22.3	99.08	33.36	32.01	52.06	7.04	32.85	190.04
    >     20.03	70.75	19.75	34.95	53.29	10.55	38.2	189.41
    >     18.68	72.74	23.72	38.69	62.41	9.65	35.26	170.12
    >     20.33	75.64	20.88	33.85	53.81	10.06	32.82	171.32
    >     19.75	70.24	18.67	36.71	61.75	10.08	40.26	165.22
    >     21.03	78.55	14.35	34.33	64.98	9.83	33.87	161.67]; X=[ 23.68	173.30	17.43	43.59	53.66	16.86	65.02	385.94
    >     29.67	146.90	64.51	54.36	86.10	14.77	32.19	193.10]; [COEFF,DIST,CLASS] = dclass(X1,X2,X)
    

    CLASS =

     2     2 根据结果,广东和西藏被归为第二大类
    
    展开全文
  • 采用Fisher鉴别分析对mnist数据集当中的手写数字0,1进行识别
  • 贝叶斯分类器和fisher判别的融合,包括课程大作业论文和算法的实现对比
  • 人脸特征是最自然直接的生物特征,它具有直接、友好、方便的特点,...文中阐述了应用Fisher 判别法在人脸图像样本分类方面的运用。在标准数据库ORL人脸库和Yale人脸数据库上仿真的试验结果证实了方法的有效性和稳定性。
  • 二、Fisher判别分析的思想三、Fisher判别分析步骤四、Fisher判别分析python代码实现 一、什么是Fisher线性判别? 可以考虑把d维空间的样本投影到一条直线上,形成一维空间,即把维数压缩到一维,这在数学上容易办到...

    一、什么是Fisher线性判别?

    可以考虑把d维空间的样本投影到一条直线上,形成一维空间,即把维数压缩到一维,这在数学上容易办到,然而,即使样本在d维空间里形成若干紧凑的互相分得开的集群,如果把它们投影到一条任意的直线上,也可能使得几类样本混在一起而变得无法识别。但是在一般情况下,总可以找到某个方向,使得在这个方向的直线上,样本的投影能分开得最好。问题是如何根据实际情况找到这条最好的、最易于分类的投影线,这就是Fisher算法所要解决的基本问题。

    二、Fisher判别分析的思想

    Fisher判别的思想是投影,将R组P维数据投影到某一个方向,用一元方差分析的方法使投影组与组之间尽可能分开。
    如下所示,给出一个二维示意图
    在这里插入图片描述
    上 面 二 维 示 意 图 中 的 " + " 、 " − " 分 别 代 表 正 例 和 反 例 , 椭 圆 表 示 数 据 簇 的 外 轮 廓 , 虚 线 表 示 投 影 , 红 色 实 心 圆 和 红 色 实 心 三 角 形 分 别 表 示 两 类 样 本 投 影 后 的 中 心 点 。 上面二维示意图中的"+"、"-"分别代表正例和反例,椭圆表示数据簇的外轮廓,虚线表示投影,红色实心圆和红色实心三角形分别表示两类样本投影后的中心点。 "+"""线 给 定 数 据 集 , D ϵ { ( X i , Y i ) } , , Y i ϵ ( 0 , 1 ) 令 X i 、 μ i 分 别 表 示 第 , i ϵ { 0 , 1 } 类 示 例 的 集 合 、 均 值 向 量 。 给定数据集 ,D\epsilon \{(X_i,Y_i)\},,Y_i\epsilon {(0,1)}令 X_i、 \mu_i 分别表示第,i\epsilon\{0,1\} 类示例的集合、均值向量。 ,Dϵ{(Xi,Yi)},Yiϵ(0,1)Xiμi,iϵ{0,1} 若 将 数 据 投 影 到 直 线 ω 上 , 则 两 类 样 本 的 中 心 在 直 线 上 的 投 影 分 别 为 ω T μ 0 和 ω T μ 1 。 若将数据投影到直线 \omega上,则两类样本的中心在直线上的投影分别为\omega^T\mu_0和\omega^T\mu_1 。 线ω线ωTμ0ωTμ1

    三、Fisher判别分析步骤

    1. 把 来 自 2 类 的 训 练 样 本 集 划 分 为 2 个 子 集 x 0 和 x 1 ; 1. 把来自2类的训练样本集划分为2个子集 x_0 和 x_1 ; 1.22x0x1

    2. 计 算 各 类 的 均 值 向 量 μ i , i = 0 , 1 ; μ i = 1 N i ∑ x ϵ X i x ; 2. 计算各类的均值向量 \mu_i , i = 0,1; \mu_i =\frac{1}{N_i}\sum_{x\epsilon X_i }x; 2.μi,i=0,1μi=Ni1xϵXix

    3. 计 算 各 类 的 类 内 离 散 矩 阵 S ω i , i = 0 , 1 ; S ω i = ∑ x ϵ X i ( x − μ i ) ( x − μ i ) T ; 3. 计算各类的类内离散矩阵 S_{\omega_i}, i = 0,1 ;S_{\omega_i} = \sum_{x\epsilon X_i }(x - \mu_i)(x - \mu_i) ^T; 3.Sωii=0,1Sωi=xϵXi(xμi)(xμi)T

    4. 计 算 类 内 总 离 散 矩 阵 S ω = S ω 0 + S ω 1 ; 4. 计算类内总离散矩阵 S_\omega = S_{\omega_0} + S_{\omega_1}; 4.Sω=Sω0+Sω1

    5. 计 算 矩 阵 S ω 的 逆 矩 阵 S ω − 1 ; 5. 计算矩阵 S_\omega 的逆矩阵S_\omega^{-1}; 5.SωSω1

    6. 求 出 向 量 ω ∗ = S ω − 1 ( μ i − μ 0 ) ( 此 处 采 用 拉 格 朗 日 乘 子 法 解 出 F i s h e r 线 性 判 别 的 最 佳 投 影 方 向 ) ; 6. 求出向量\omega^* = S_\omega^{-1}(\mu_i - \mu_0)(此处采用拉格朗日乘子法解出Fisher线性判别的最佳投影方向); 6.ω=Sω1(μiμ0)Fisher线

    7. 判 别 函 数 为 y = ω ∗ T x ; 7. 判别函数为 y = {\omega^*}^Tx; 7.y=ωTx

    8. 判 别 函 数 的 阈 值 ω 0 可 采 用 以 下 两 种 方 法 确 定 : 8. 判别函数的阈值{\omega_0}可采用以下两种方法确定: 8.ω0 第 一 种 是 ω 0 = ω ∗ T μ 0 + ω ∗ T μ 1 2 ; 第一种是 {\omega_0} = \frac{{\omega^*}^T\mu_0 + {\omega^*}^T\mu_1}{2}; ω0=2ωTμ0+ωTμ1
    第 二 种 是 ω 0 = N 0 ω ∗ T μ 0 + N 1 ω ∗ T μ 1 N 0 + N 1 ; 第二种是 {\omega_0} = \frac{N_0{\omega^*}^T\mu_0 + N_1{\omega^*}^T\mu_1}{N_0 + N_1} ; ω0=N0+N1N0ωTμ0+N1ωTμ1

    9. 分 类 规 则 : 比 较 y 值 与 阈 值 ω 0 的 大 小 , 得 出 其 分 类 。 9. 分类规则:比较 y 值与阈值{\omega_0} 的大小,得出其分类。 9.yω0

    四、Fisher判别分析python代码实现

    导入包

    #导入包
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt 
    import seaborn as sns
    

    导入数据集

    #导入数据集
    df = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data', header=0)
    Iris1=df.values[0:50,0:4]
    Iris2=df.values[50:100,0:4]
    Iris3=df.values[100:150,0:4]
    

    定义类均值向量

    #定义类均值向量
    m1=np.mean(Iris1,axis=0)
    m2=np.mean(Iris2,axis=0)
    m3=np.mean(Iris3,axis=0)
    

    定义类内离散度矩阵

    #定义类内离散度矩阵
    s1=np.zeros((4,4))
    s2=np.zeros((4,4))
    s3=np.zeros((4,4))
    for i in range(0,30,1):
        a=Iris1[i,:]-m1
        a=np.array([a])
        b=a.T
        s1=s1+np.dot(b,a)    
    for i in range(0,30,1):
        c=Iris2[i,:]-m2
        c=np.array([c])
        d=c.T
        s2=s2+np.dot(d,c) 
    for i in range(0,30,1):
        a=Iris3[i,:]-m3
        a=np.array([a])
        b=a.T
        s3=s3+np.dot(b,a)
    

    定义总类内离散矩阵

    #定义总类内离散矩阵
    sw12 = s1 + s2;
    sw13 = s1 + s3;
    sw23 = s2 + s3;
    

    定义投影方向

    #定义投影方向
    a=np.array([m1-m2])
    sw12=np.array(sw12,dtype='float')
    sw13=np.array(sw13,dtype='float')
    sw23=np.array(sw23,dtype='float')
    

    判别函数以及阈值T(即w0)

    #判别函数以及阈值T(即w0)
    a=m1-m2
    a=np.array([a])
    a=a.T
    b=m1-m3
    b=np.array([b])
    b=b.T
    c=m2-m3
    c=np.array([c])
    c=c.T
    w12=(np.dot(np.linalg.inv(sw12),a)).T
    w13=(np.dot(np.linalg.inv(sw13),b)).T
    w23=(np.dot(np.linalg.inv(sw23),c)).T
    T12=-0.5*(np.dot(np.dot((m1+m2),np.linalg.inv(sw12)),a))
    T13=-0.5*(np.dot(np.dot((m1+m3),np.linalg.inv(sw13)),b))
    T23=-0.5*(np.dot(np.dot((m2+m3),np.linalg.inv(sw23)),c))
    

    计算正确率

    #计算正确率
    kind1=0
    kind2=0
    kind3=0
    newiris1=[]
    newiris2=[]
    newiris3=[]
    for i in range(30,49):
        x=Iris1[i,:]
        x=np.array([x])
        g12=np.dot(w12,x.T)+T12
        g13=np.dot(w13,x.T)+T13
        g23=np.dot(w23,x.T)+T23
        if g12>0 and g13>0:
            newiris1.extend(x)
            kind1=kind1+1
        elif g12<0 and g23>0:
            newiris2.extend(x)
        elif g13<0 and g23<0 :
            newiris3.extend(x)
    for i in range(30,49):
        x=Iris2[i,:]
        x=np.array([x])
        g12=np.dot(w12,x.T)+T12
        g13=np.dot(w13,x.T)+T13
        g23=np.dot(w23,x.T)+T23
        if g12>0 and g13>0:
            newiris1.extend(x)
        elif g12<0 and g23>0:  
            newiris2.extend(x)
            kind2=kind2+1
        elif g13<0 and g23<0 :
            newiris3.extend(x)
    for i in range(30,49):
        x=Iris3[i,:]
        x=np.array([x])
        g12=np.dot(w12,x.T)+T12
        g13=np.dot(w13,x.T)+T13
        g23=np.dot(w23,x.T)+T23
        if g12>0 and g13>0:
            newiris1.extend(x)
        elif g12<0 and g23>0:     
            newiris2.extend(x)
        elif g13<0 and g23<0 :
            newiris3.extend(x)
            kind3=kind3+1
    correct=(kind1+kind2+kind3)/60
    

    判断出来的综合正确率

    print('正确率:',correct*100,'%')
    

    运算结果
    在这里插入图片描述
    最终判断出来的综合正确率为91.66666666666666%!

    展开全文
  • python代码完成Fisher判别

    千次阅读 2020-05-05 22:44:24
    算法描述(1)W的确定(2)阈值的确定(3)Fisher线性判别的决策规则二.数据描述1.iris数据2.sonar数据三.python代码1.数据生成2.fisher算法实现3.判定类别4.绘图四.理解和心得五.参考链接 一.算法描述 Fisher线性...
  • Fisher判别法对距离判别法对均值相近类别的判别进行了改进。
  • 机器学习之Fisher判别分析

    千次阅读 2020-05-05 18:57:58
    机器学习之Fisher判别分析一、算法描述1、W的确定2、阈值的确定3、Fisher线性判别的决策规则4、群内离散度”(样本类内离散矩阵)、“群间离散度”(总类内离散矩阵)二、Python代码实现 一、算法描述 Fisher线性...
  • **实验目的:了解Fisher判别的原理,明白R语言实现Fisher判别的函数 了解Bayes判别的原理,明白R语言实现Bayes判别的函数 实验要求: 5.4 实验素材:在我的资源中ex.5.4 实验代码:** 1、读取数据并查看数据 > d...
  • 基于matlab的Fisher判别

    2015-01-07 12:43:58
    基于matlab的Fisher判别Fisher判别是找一条线把高维映射为一维在进行判别的方法。
  • Fisher判别分析法(FDA)应用于硫化矿石自燃倾向性等级分类问题中,选用主要矿物及含量、吸氧速度常数平均值、自热点、自燃点4项指标作为判别因子,建立硫化矿石自燃倾向性等级分类的FDA模型。选取新桥硫铁矿13个矿样...
  • 目录python代码实现Fisher判别推导一、Fisher判别法1、Fisher判别法基本定义二、Fisher判别法求解步骤1、计算各类样本均值向量2、计算样本类内离散度矩阵SiS_iSi​和总类内离散度矩阵SωS_\omegaSω​3、计算样本类...
  • R语言中Fisher判别的使用方法

    千次阅读 2019-09-27 14:20:32
    最近编写了Fisher判别的相关代码时,需要与已有软件比照结果以确定自己代码的正确性,于是找到了安装方便且免费的R。这里把R中进行Fisher判别的方法记录下来。 1. 判别分析与Fisher判别 不严谨但是通俗的说法,...
  • 多元统计中的Fisher判别算法代码分享-费舍尔判别函数.rar 本帖最后由 songyc907 于 2012-2-15 15:24 编辑 初学MATLAB,尝试着实现了一个费舍尔判别算法。将代码分享出来,仅供抛砖引玉之用。请大家指正。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,587
精华内容 1,834
关键字:

fisher判别