精华内容
下载资源
问答
  • MATLAB实现LDA线性判别分析),以两个类别数目为例
    千次阅读
    2020-05-18 16:36:13
    %LDA 线性判别分析,以两个类别数目为例
    function [w,c] = myLDA(X,Y) %X-数据矩阵,Y-类标签
    idx0 = find(Y==0);idx1 = find(Y==1);
    [n0 nn0]= size(idx0);[n1 nn1] = size(idx1);
    X0 = X(idx0,:);X1 = X(idx1,:);
    Sb = (X0'*ones(n0,1)/n0-X1'*ones(n1,1)/n1)*(X0'*ones(n0,1)/n0-X1'*ones(n1,1)/n1)';
    Sw = X0'*(eye(n0)-ones(n0)/n0)*X0+X1'*(eye(n1)-ones(n1)/n1)*X1;
    [w,c]=eig(Sb,Sw);
    
    更多相关内容
  • 此为LDA(线性判别分系的matlab代码)有兴趣的可以下,共同学习啊。还是免费的好,大家可以交流一下。
  • 这种 LDA 实现的特点: - 允许 >2 类- 允许用户指定的先验概率- 只需要基础 MATLAB(不需要工具箱) - 假设数据是完整的(没有缺失值) - 已通过统计软件验证-“帮助LDA”提供用法和示例,包括条件概率计算 ...
  • 原创,测试识别率0.99,重构图像完全比不上PCA,但能满足分类要求。可下载后直接运行,并保存特征向量数据
  • 今天小编大家分享一篇Python实现线性判别分析(LDA)的MATLAB方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 前言 正题 1.LDA的思想 2. 瑞利商(Rayleigh quotient)与广义瑞利商(genralized Rayleigh quotient) ...二类LDA matlab举例: 1.读取数据集 2.分离数据集 3.求解w 4.输出降维后的数据集

    目录

    前言

    正题

    1.LDA的思想

    2. 瑞利商(Rayleigh quotient)与广义瑞利商(genralized Rayleigh quotient) 

    3. 二类LDA原理

    4.多类LDA原理

    5.LDA分类

    6.LDA算法流程

    二类LDA matlab举例:

    1.读取数据集

    2.分离数据集

    3.求解w

    4.输出降维后的数据集

    5.分类
     


    前言

            在主成分和因子分析中,我们对降维算法做了总结。这里我们就对另外一种经典的降维方法线性判别分析(Linear Discriminant Analysis, 以下简称LDA)做一个总结。LDA在模式识别领域(比如人脸识别,舰艇识别等图形图像识别领域)中有非常广泛的应用,因此我们有必要了解下它的算法原理。

        在学习LDA之前,有必要将其自然语言处理领域的LDA区别开来,在自然语言处理领域, LDA是隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA),他是一种处理文档的主题模型。我们本文只讨论线性判别分析,因此后面所有的LDA均指线性判别分析。

    在做具体解释之前,请允许我放上我之前的一些链接:

    主成分分析 —— matlab :传送门

    主成分分析 —— python :传送门

    因子分析 —— matlab :传送门

    因子分析 —— python :传送门

    正题

    1.LDA的思想

            线性判别分析((Linear Discriminant Analysis ,简称 LDA)是一种经典的线性学习方法,在二分类问题上因为最早由 [Fisher,1936] 提出,亦称 ”Fisher 判别分析“。并且LDA也是一种监督学习的降维技术,也就是说它的数据集的每个样本都有类别输出。这点与主成分和因子分析不同,因为它们是不考虑样本类别的无监督降维技术。

            LDA 的思想非常朴素:给定训练样例集,设法将样例投影到一条直线上,使得同样样例的投影尽可能接近、异样样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。其实可以用一句话概括:就是“投影后类内方差最小,类间方差最大”。

    图为 LDA的二维示意图。”+“,”-“分别代表正侧和反侧,椭圆表示数据簇的外轮廓,虚线表示投影,红色实心圆和实心三角形分别表示两类样本投影后的中心点。

    2. 瑞利商(Rayleigh quotient)与广义瑞利商(genralized Rayleigh quotient) 

            我们先来看一下瑞丽商的定义。

            瑞丽商是指这样的函数R(A,x):

    R(A,x) = \frac{x^HAx}{x^Hx}

            其中x为非零向量,而A为 n*n 的Hermitan矩阵。所谓的Hermitan矩阵就是满足共轭转置矩阵和自己相等的矩阵,即A^{H}=A . 如果我们的矩阵A是实矩阵,则满足A^{T}=A的矩阵即为Hermitan矩阵。

            瑞利商R(A,x)有一个非常重要的性质,即它的最大值等于矩阵A最大的特征值,而最小值等于矩阵A的最小的特征值,也就是满足

    \lambda_{min} \leq \frac{x^HAx}{x^Hx} \leq \lambda_{max}

            至于证明过程就不在这里介绍了。当向量x是标准正交基时,即满足x^{H}x=1时,瑞利商退化为:R(A,x)=x^{H}Ax,这个形式在谱聚类和PCA中都有出现。

    以上就是瑞丽商的内容。

            下面我们再来介绍一下广义的瑞丽商,

            广义的瑞丽商是指这样的函数 R(A,B,x) :

    R(A,x) = \frac{x^HAx}{x^HBx}

            其中x为非零向量,而A,B为n×n的Hermitan矩阵。B为正定矩阵。它的最大值和最小值是什么呢?其实我们只要通过将其通过标准化就可以转化为瑞利商的格式。我们令x=B^{-1/2}x',则分母转化为:

    x^HBx = x'^H(B^{-1/2})^HBB^{-1/2}x' = x'^HB^{-1/2}BB^{-1/2}x' = x'^Hx'

    而分子转化为:

    x^HAx = x'^HB^{-1/2}AB^{-1/2}x'

    此时我们的R(A,B,x)转化为R(A,B,x′):

    R(A,B,x') = \frac{x'^HB^{-1/2}AB^{-1/2}x'}{x'^Hx'}

            利用前面的瑞利商的性质,我们可以很快的知道,R(A,B,x′)的最大值为矩阵B^{-1/2}AB^{-1/2}的最大特征值,或者说矩阵B^{-1}A的最大特征值,而最小值为矩阵B^{-1}A的最小特征值。

    3. 二类LDA原理

            我们先介绍一下稍微简单,容易理解的二分类LDA入手,详细了解一下LDA的原理

            首先给定数据集 D={(x1,y1),(x2,y2),...,((xm,ym))} ,其中任意样本xi为n维向量,yi∈{0,1}。另外我们定义Nj(j=0,1)为第j类样本的个数,Xj(j=0,1)为第j类样本的集合,而μj(j=0,1)为第j类样本的均值向量,定义Σj(j=0,1)为第j类样本的协方差矩阵(严格说是缺少分母部分的协方差矩阵)。

    其中:

            μj的表达式为:

    \mu_j = \frac{1}{N_j}\sum\limits_{x \in X_j}x\;\;(j=0,1)

            Σj的表达式为:

    \Sigma_j = \sum\limits_{x \in X_j}(x-\mu_j)(x-\mu_j)^T\;\;(j=0,1)

    我们将数据投影到一条直线上即可。我们假设我们的投影直线是向量w,则对任意一个样本本xi,它在直线w的投影为w^{T}x_{i},对于我们的两个类别的中心点μ0,μ1在在直线ww的投影为w^{T}u_{0}w^{T}u_{1}

    由于LDA需要让不同类别的数据的类别中心之间的距离尽可能的大,也就是我们要最大化 ||w^T\mu_0-w^T\mu_1||_2^2 ,同时我们希望同一种类别数据的投影点尽可能的接近,也就是要同类样本投影点的协方差w^T\Sigma_0w 和 w^T\Sigma_1w 尽可能的小,即最小化w^T\Sigma_0w+w^T\Sigma_1w 。综上所述,我们的优化目标为:

    \underbrace{arg\;max}_w\;\;J(w) = \frac{||w^T\mu_0-w^T\mu_1||_2^2}{w^T\Sigma_0w+w^T\Sigma_1w} = \frac{w^T(\mu_0-\mu_1)(\mu_0-\mu_1)^Tw}{w^T(\Sigma_0+\Sigma_1)w}

    在这里,大家是否有很多问好???

    就是 w , w^T 在哪,怎么算,下面就是我们求解的过程,在本小节最后就是哦!!!

    我们一般定义类内散度矩阵Sw为:

    S_w = \Sigma_0 + \Sigma_1 = \sum\limits_{x \in X_0}(x-\mu_0)(x-\mu_0)^T + \sum\limits_{x \in X_1}(x-\mu_1)(x-\mu_1)^T

    同时定义类间散度矩阵Sb为:

    S_b = (\mu_0-\mu_1)(\mu_0-\mu_1)^T

    全局散度矩阵S_t=S_{b }+ S_{w}=\sum_{i=1}^{m} (x_i-\mu)(x_i-\mu)^T

    这样我们的优化目标重写为:

    \underbrace{arg\;max}_w\;\;J(w) = \frac{w^TS_bw}{w^TS_ww}

            仔细一看上式,这不就是我们的广义瑞利商嘛!这就简单了,利用我们第二节讲到的广义瑞利商的性质,我们知道我们的J(w')最大值为矩阵S^{-1/2}_wS_bS^{-1/2}_w的最大特征值,而对应w'为S^{-1/2}_wS_bS^{-1/2}_w 的最大特征值对应的特征向量! 而S{^{-1}_{w}}S_{b}的特征值和S^{-1/2}_wS_bS^{-1/2}_w的特征值相同,的特征向量S{^{-1}_{w}}S_{b}的特征向量w和S^{-1/2}_wS_bS^{-1/2}_w的特征向量w′满足w=S_{w}^{-1/2}w'的关系! 

    在这里我们就求到了 w 了哦 !!!

            注意到对于二类的时候,S_bw的方向恒平行于μ0−μ1,不妨令S_bw=\lambda (\mu_0-\mu _1),将其带入:(S_w^{-1}S_b)w=\lambda w,可以得到w=S_w^{-1}(\mu _0-\mu_1), 也就是说我们只要求出原始二类样本的均值和方差就可以确定最佳的投影方向w了。

    4.多类LDA原理

            前面我们介绍了二分类的LDA,接下来我们再来看看多类别的LDA。

            假设我们的数据集,D=\{(x_1,y_1), (x_2,y_2), ...,((x_m,y_m))\},其中任意样本x_i 为n维向量,y_i \in \{C_1,C_2,...,C_k\} 。我们定义N_j(j=1,2...k)为j类样本的个数,X_j(j=1,2...k)为j类样本的集合,而\mu_j(j=1,2...k) 为第j类样本的均值向量,定义\Sigma_j(j=1,2...k) 为第j类样本的协方差矩阵。从在二类LDA里面定义的公式可以很容易的类推到多类LDA。

            由于我们是多类向低维投影,则此时投影到的低维空间就不是一条直线,而是一个超平面了。假设我们投影到的低维空间的维度为d,对应的基向量为(w_1,w_2,...w_d),基向量组成的矩阵为W,它是一个n*d的矩阵。

            此时我们的优化目标应该可以变成为:

    \frac{W^TS_bW}{W^TS_wW}

    其中,S_b = \sum\limits_{j=1}^{k}N_j(\mu_j-\mu)(\mu_j-\mu)^T\mu为所有样本的均值向量。S_w = \sum\limits_{j=1}^{k}S_{wj} = \sum\limits_{j=1}^{k}\sum\limits_{x \in X_j}(x-\mu_j)(x-\mu_j)^T

    但是在这里会有一个问题

            就是W^TS_bW 和W^TS_wW都是矩阵,不是标量,无法作为一个标量函数来优化!也就是说,我们无法直接用二类LDA的优化方法,怎么办呢?

            一般来说,我们可以用其他的一些替代优化目标来实现。

            比如,常见的一个LDA多类优化目标函数定义为:

    \underbrace{arg\;max}_W\;\;J(W) = \frac{\prod\limits_{diag}W^TS_bW}{\prod\limits_{diag}W^TS_wW}

            其中,\prod\limits_{diag}A  为 A的主对角线元素的乘积,W为n×d的矩阵。

            

            J(W)的优化过程可以转化为:

    J(W) = \frac{\prod\limits_{i=1}^dw_i^TS_bw_i}{\prod\limits_{i=1}^dw_i^TS_ww_i} = \prod\limits_{i=1}^d\frac{w_i^TS_bw_i}{w_i^TS_ww_i}

    此时,我再来观察一下上式,会发现最右边的式子,就是我们上面所讲的广义瑞丽商!!!最大值是矩阵S_w^{-1}S_b的最大特征值,最大的d个值的乘积就是矩阵S_w^{-1}S_b 的最大的d个特征值的乘积,此时对应的矩阵W为这最大的d个特征值对应的特征向量张成的矩阵。

        由于W是一个利用了样本的类别得到的投影矩阵,因此它的降维到的维度d最大值为k-1。为什么最大维度不是类别数k呢?

            因为Sb中每个μj−μ的秩为1,因此协方差矩阵相加后最大的秩为k(矩阵的秩小于等于各个相加矩阵的秩的和),但是由于如果我们知道前k-1个μj后,最后一个μk可以由前k-1个μj线性表示,因此Sb的秩最大为k-1,即特征向量最多有k-1个。

    5.LDA分类

    那么在最佳的分类空间如何对样本进行分类?

    1)对二分类问题。由于只有两个类别,在经过上面的求解后,最后所有样本将会映射到一维空间中,设两个不同样本映射后的中心点分别为 \large \bar{z_1},\large \bar{z_2};我们将两个类别的中心点之间中心点作为分类点。

    \large \bar{z}\frac{\bar{z_1}+\bar{z_2}}{2}

    最后,我们将

    \large w^{T}x>\bar{z}

    的x分为一类,其他的分为另一类。

      2)对多分类问题。通过LDA方法最终将原始数据映射到c-1个维度上,现在我们需要在这c-1个维度上将样本集分成c类。这个怎么分呢?本人暂时也不知道,能想到的只是将问题转化为二分类问题。实际上,对于多类的情况主要考虑用来降维。

      对于此类问题,我们主要将它转化为二分类来处理,我们使用一对其余的方法。简单来说就是先将所有c类样本分成1和2~c,然后再将2~c分为2和3~c,以此类推,直到完全分开。

    6.LDA算法流程

    输入:数据集D=\{(x_1,y_1), (x_2,y_2), ...,((x_m,y_m))\} ,其中任意样本xixi为n维向量,\large y_i \in \{C_1,C_2,...,C_k\},降维到的维度d。

    输出:降维后的样本集D′

    1) 计算类内散度矩阵Sw

    2) 计算类间散度矩阵Sb 

    3) 计算矩阵S^{-1}wSb 

    4)计算S^{-1}wSb的最大的d个特征值和对应的d个特征向量(w1,w2,...wd)得到投影矩阵w

    5) 对样本集中的每一个样本特征xi,转化为新的样本z_i=W^Tx_i

    6) 得到输出样本集 D'=\{(z_1,y_1), (z_2,y_2), ...,((z_m,y_m))\}

    二类LDA matlab举例:

    1.读取数据集

    data = xlsread('文件路径')

    2.分离数据集

    比如取数据集的前20行,2和3列

    data1=data(1:20,2:3)

    比如把上面数据集的第一列定义为x,第二列定义为y;然后分类x0,x1

    x = data1(:,1)
    y = data1(:,2)
    x0 = x(find(y==0))
    x1 = x(find(y==1))

    诸如此类等等,请视情况自行决定,因我手头没有相关例题,只能介绍到这里了

    3.求解w

    %求均值
    u0 = mean(x0);
    u1 = mean(x1);
    
    %求协方差
    E0 = (x0-u0)'*(x0-u0);
    E1 = (x1-u1)'*(x1-u1);
    
    Sw = E0+E1;
    Sb = (u0-u1)*(u0-u1)';
    w = (Sw)^(-1)*(u0-u1)

    4.输出降维后的数据集

    predict_y = w'* x

    5.分类

    u = mean(w'* x)
    for i = x
        h = w' * i ;
        lei = 1*(h<u)
    end

    好了,这次更改就到这里结束了,后续会增加实例的!

    展开全文
  • 1.将LDA在训练样本上的低维表示结果可视化。 2.使用距离最短对测试样本进行分类。 实验代码 clear;clc; %% 导入数据 load("train.mat"); x=train(:,1:4); y=train(:,5); load("test.mat"); x_test=test; % ********...

    实验内容

    1.将LDA在训练样本上的低维表示结果可视化。
    2.使用距离最短对测试样本进行分类。

    实验代码

    clear;clc;
    %% 导入数据
    load("train.mat");
    x=train(:,1:4);
    y=train(:,5);
    load("test.mat");
    x_test=test;
    
    % *********************问题二*******************
    % **********************************************
    %% 训练样本的结果可视化
    [mappedX,mapping]=lda(x,y,2);
    % 训练样本中的第一等级
    index1=find(y==1);
    plot(mappedX(index1,1),mappedX(index1,2),'or','MarkerSize',15); 
    hold on;
    % 训练样本中的第二等级
    index2=find(y==2);
    plot(mappedX(index2,1),mappedX(index2,2),'^g','MarkerSize',15); 
    hold on;
    % 训练样本中的第三等级
    index3=find(y==3);
    plot(mappedX(index3,1),mappedX(index3,2),'sb','MarkerSize',15); 
    legend('训练样本中的第一等级','训练样本中的第二等级','训练样本中的第三等级');
    hold on;
    
    % ********************问题三********************
    % **********************************************
    %% 距离最短对测试样本进行分类
    for i=1:size(x_test,1)
        for j=1:size(x,1)
            dist(i,j)=sqrt(sum((x_test(i,:)-x(j,:)).^2,2));
        end
    end
    [min,index]=min(dist,[],2);
    y_test=[y(index(1));y(index(2))];
    %% 全部样本的可视化
    X=[x;x_test];
    Y=[y;y_test];
    [mappedX,mapping]=lda(X,Y,2);
    % 测试样本中的第一等级
    temp1=find(Y==1);
    ind1=find(temp1>size(x,1));
    index1=temp1(ind1); % 全部样本中属于第一等级且为测试样本的索引
    plot(mappedX(index1,1),mappedX(index1,2),'ok','MarkerSize',15);
    hold on;
    % 测试样本中的第二等级
    temp2=find(Y==2);
    ind2=find(temp2>size(x,1));
    index2=temp2(ind2); % 全部样本中属于第二等级且为测试样本的索引
    plot(mappedX(index2,1),mappedX(index2,2),'^k','MarkerSize',15);
    hold on;
    % 测试样本中的第三等级
    temp3=find(Y==3);
    ind3=find(temp3>size(x,1));
    index3=temp3(ind3); % 全部样本中属于第三等级且为测试样本的索引
    plot(mappedX(index3,1),mappedX(index3,2),'sb','MarkerSize',15);
    

    其中,lda函数调用的lda.m代码文件如下

    function [mappedX, mapping] = lda(X, labels, no_dims)
    % 函数功能:使用LDA对数据集A进行降维至no_dims维
    % 函数的参数:X(数据集)labels(数据集X对应的标签)no_dims(投影后的维度)
    % 函数返回值:mappedX(投影后的no_dims维数据集)
    
    % 步骤一:求均值
    mapping.mean = mean(X, 1);
    X = bsxfun(@minus, X, mapping.mean);
    
    % 步骤二:求类内散度矩阵
    [classes, bar, labels] = unique(labels);
    nc = length(classes);   % 确定标签的种类
    Sw = zeros(size(X, 2), size(X, 2));     % 初始化Sw  
    St = cov(X); % 计算整体的协方差矩阵
    for i=1:nc
        cur_X = X(labels == i,:);
        C = cov(cur_X);
        p = size(cur_X, 1) / (length(labels) - 1);
        Sw = Sw + (p * C);
    end
    
    % 步骤三:计算类间散度矩阵
    Sb = St - Sw;
    Sb(isnan(Sb)) = 0; 
    Sw(isnan(Sw)) = 0;
    Sb(isinf(Sb)) = 0;
    Sw(isinf(Sw)) = 0;
    if nc <= no_dims
         no_dims = nc - 1;
         warning(['Target dimensionality reduced to ' num2str(no_dims) '.']);   % 确保不要映射到较高维度
    end
    
    % 步骤四:求最大特征矩阵和特征向量
    [M, lambda] = eig(Sb, Sw);
    lambda(isnan(lambda)) = 0;
    [lambda, ind] = sort(diag(lambda), 'descend');
    M = M(:,ind(1:min([no_dims size(M, 2)])));        
    % 步骤五:计算投影数据
    mappedX = X * M; 
    mapping.M = M;
    mapping.val = lambda;
    end
    

    实验结果

    图1. 训练样本可视化
    图2. 全体样本可视化

    实验心得

    通过本次“线性判别分析实验”的课上和课下学习,我对LDA这种有监督的数据降维方法有了更加深刻的理解:将带有标签的数据降维,投影到低维空间同时满足三个条件:①尽可能多地保留数据样本的信息(即选择最大的特征是对应的特征向量所代表的方向)。②寻找使样本尽可能好分的最佳投影方向。③投影后使得同类样本尽可能近,不同类样本尽可能远。

    展开全文
  • 使用matlab实现的线性判别分析代码,输入、输出、关键代码注释以及示例都有详细的说明。代码正确性已经得到验证!
  • MATLAB实现LDA线性判别分析

    千次阅读 2018-11-03 20:14:10
    代码如下 clear all;close all;clc; x=[0.697,0.774,0.634,0.608,0.556,0.403,0.481,0.437,0.666,0.243,0.245,0.343,...还进行过二组平行直线的判别。结果没有很好符合。可能是选择特征向量时舍去的那部分导致的。

    代码如下

    clear all;close all;clc;
    x=[0.697,0.774,0.634,0.608,0.556,0.403,0.481,0.437,0.666,0.243,0.245,0.343,0.639,0.657,0.360,0.593,0.719];
    y=[0.460,0.376,0.264,0.318,0.215,0.237,0.149,0.211,0.091,0.267,0.057,0.099,0.161,0.198,0.370,0.042,0.103];
    z=[1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0];
    %data=[x;y;z]';
    data=[4,2,2,3,4,9,6,9,8,10
        2,4,3,6,4,10,8,5,7,8
        1,1,1,1,1,0,0,0,0,0]';
    [m,n]=size(data);
    for i=1:m
        if data(i,3)==1
            plot(data(i,1),data(i,2),'r.','MarkerSize', 12);hold on;
        end
        if data(i,3)==0
            plot(data(i,1),data(i,2),'b.','MarkerSize', 12);
        end
    end
    new_data=zeros(m,n-1);
    cen1=zeros(1,2);cen0=zeros(1,2);%定义类中心
    sum1=zeros(1,2);sum0=zeros(1,2);
    num1=0;num0=0;
    %计算类中心
    for i=1:m
        if data(i,3)==1
            sum1(1,1)=sum1(1,1)+data(i,1);
            sum1(1,2)=sum1(1,1)+data(i,2);
            num1=num1+1;
        end
        if data(i,3)==0
            sum0(1,1)=sum0(1,1)+data(i,1);
            sum0(1,2)=sum0(1,2)+data(i,2);
            num0=num0+1;
        end
    end
    cen0=sum0/num0;cen1=sum1/num1;
    %计算类内散度矩阵Sw
    Sw=zeros(2,2);
    for i=1:m
        if data(i,3)==1
            Sw=Sw+(data(i,[1 2])-cen1(1,:))'*(data(i,[1 2])-cen1(1,:));
        end
        if data(i,3)==0
            Sw=Sw+(data(i,[1 2])-cen0(1,:))'*(data(i,[1 2])-cen0(1,:));
        end
    end
    %计算类间散度矩阵Sb;
    Sb=(cen0-cen1)'*(cen0-cen1);
    [L,D]=eigs(Sw\Sb',1);%计算最大特征值和特征向量
    %显示投影线
    k=L(1)/L(2);
    b=0;
    xx=0:10;
    yy=k*xx;
    plot(xx,yy)
    %计算投影点并显示
    new_data(:,1)=(k*data(:,2)+data(:,1))/(k*k+1);
    new_data(:,2)=k*new_data(:,1);
    new_data(:,3)=data(:,3);
    for i=1:m
        if new_data(i,3)==1
            plot(new_data(i,1),new_data(i,2),'r+','MarkerSize', 5);
        end
        if new_data(i,3)==0
            plot(new_data(i,1),new_data(i,2),'b+','MarkerSize', 5);
        end
    end
    %axis([0 1 0 1])
    axis([0 15 0 15])
    hold on;
    

    下面是运行后的结果
    图像符合的还是可以的
    下面是用周志华西瓜书数据集进行的,效果没有上面的明显
    在这里插入图片描述
    还进行过二组平行直线的判别。结果没有很好符合。可能是选择特征向量时舍去的那部分导致的。

    展开全文
  • fisher 线性判别分析matlab实现

    热门讨论 2012-06-07 15:53:36
    用fisher线性判别分析建立P300分类模型。特征提取用PCA。
  • 以花为例的线性判别分析。 在这里,我们讨论了三种不同种类的花,并通过使用萼片和花瓣的参数来区分它们。
  • 线性判别分析(Linear Discriminant Analysis, LDA)算法,利用MATLAB实现。附实例原始代码以及结果图
  • 线性判别分析LDA

    2021-04-21 16:53:35
    首先搞清楚什么叫判别分析?Discriminant Analysis就是根据研究对象的 各种特征值判别其类型归属问题的一种多变量统计分析方法。根据判别标准不同,可以分为距离判别、Fisher判别、Bayes判别法等。比如在KNN中用的...
  • 线性判别分析(Linear discriminant Analysis,LDA)是一种监督学习的降维技术,与无监督的PCA不同的是,PCA是寻找数据集中方差最大的方向作为主成分分量的轴,而LDA是最优化分类的特征子空间。LDA的思想可以用一句话...
  • 线性判别分析分类器和二次判别分析分类器包括代码、纸张、电源点
  • 这是线性判别分析的一个matlab code,有具体实例的运行结果,还有关于LDA 算法的详细讲解,通俗易懂,希望对大家有用.
  • 今天小编为大家讲解数据预处理中的LDA线性判别分析。线性判别分析(Linear Discriminate Analysis,LDA)是一种特征抽取的技术,用以提高数据分析过程中的计算效率。我们在主成分分析(Principal Component Analysis,PCA...
  • Matlab线性判别分析.zip

    2019-12-05 22:34:06
    Matlab代码 LDA分析,可以用作特征提取或者分类器
  • 综述线性判别分析 (LDA)是对费舍尔的线性鉴别方法(FLD)的归纳,属于监督学习的方法。LDA使用统计学,模式识别和机器学习方法,试图找到两类物体或事件的特征的一个线性组合,以能够特征化或区分它们。所得的组合可...
  • 线性判别分析

    2021-04-25 10:57:11
    线性判别分析(Linear Discriminant Analysis)简称LDA,是一种监督学习方法。LDA是在目前机器学习、数据挖掘领域经典且热门的一个算法,据我所知,百度的商务搜索部里面就用了不少这方面的算法。LDA的原理是,将带上...
  • Fisher线性判别分析

    2019-07-17 11:47:25
    Fisher线性判别分析Matlab程序对Iris数据进行分类,经过十次交叉验证计算准确率
  • 线性判别分析LDA)的MATLAB和Python实现

    万次阅读 多人点赞 2018-05-09 21:50:01
    线性判别分析(linear discriminant analysis),LDA。也称为Fisher线性判别(FLD)是模式识别的经典算法。(1)中心思想:将高维的样本投影到最佳鉴别矢量空间,来达到抽取分类信息和压缩特种空间维数的效果,投影...
  • 本篇博客主要介绍LDA(线性判别分析)算法并将LDA及其各种等价模型用于人脸的识别、图像降维可视化,并将LDA与PCA进行比较(内附数据集与matlab代码)
  • 该软件包包括 Fisher LDA 的培训、测试和演示。 测试代码还评估精度、召回率、准确度和 F1 度量。
  • 史上最好的LDA(线性判别分析)教程

    万次阅读 多人点赞 2015-11-17 22:09:19
    一、前言最近由于研究需要,要用到线性判别分析(LDA)。于是找了很多资料来看,结果发现大部分讲的都是理论知识,因此最后还是看的一知半解,后来终于找到了个英文的文档,作者由PCA引入LDA,看过后豁然开朗,主要是...
  • 使用线性判别分析降维降维的目的降维需求与维度控制线性判别分析(LDA)LDA的原理使用LDA处理二分类问题使用LDA处理多分类问题LDA的实现降维效果的评价 降维的目的 特征选择的目的是筛选出最为重要,最为关键的特征。...
  • fisher线性判别 matlab

    2015-08-14 22:58:06
    fisher线性判别matlab程序,可以输出判别得分、训练得到的判别矩阵等
  • 在这里,我训练了支持向量机,线性判别分析和四层前馈神经网络,以对来自CIFAR-10数据集的10个图像类别进行分类,从而以62.7%的SVM实现了最高的准确性。 该实验的关键问题是发现用于降低尺寸的PCA和LDA的非传统组合...
  • 经典监督式学习降维方法线性判别分析LDA算法的MATLAB代码,具有降维性能好的特点,同时可以用于分类,是一种具有代表性的降维算法

空空如也

空空如也

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

lda线性判别分析matlab

matlab 订阅