【问题标题】:MatLab: Fisher Linear Discriminant K > 2MatLab:Fisher 线性判别式 K > 2
【发布时间】:2012-09-22 12:50:40
【问题描述】:

我正在尝试在 matlab 中为 K(Class) > 2 实现 Fisher 的线性判别函数,我不太确定 K > 2 场景的算法。我知道 Matlab 有内置函数,但我想在不使用它们的情况下实现它。

如果有人能清除算法,那就太好了。

【问题讨论】:

    标签: matlab machine-learning


    【解决方案1】:

    这里是一些示例伪代码:

    N = 病例数 c=类数 Priors = 每类每个案例的先验概率向量 目标 = 每类每个案例的目标标签 数据维度 = 特征 x 案例。

    获取每个数据点的目标标签:

    T = Targets(:,Cases);      % Target labels for each case 
    

    计算每个类的平均向量和公共协方差矩阵:

    classifier.u = [mean(Data(:,(T(1,:)==1)),2),mean_nan(Data(:,(T(2,:)==1)),2),....,mean_nan(Data(:,(T(2,:)==c)),2];   % Matrix of data means
    classifier.invCV = cov(Data');
    

    使用类均值向量和公共协方差矩阵获取判别值:

    A1=classifier.u;
    B1=classifier.invCV;
    D = A1'*B1*Data-0.5*(A1'*B1.*A1')*ones(d,N)+log(Priors(:,Cases));
    

    函数会产生c判别值。然后将案例分配给具有最大判别值的类。

    【讨论】:

      猜你喜欢
      • 2013-06-19
      • 2013-12-10
      • 2018-07-08
      • 2022-06-22
      • 2016-02-23
      • 2015-01-16
      • 2020-02-03
      • 2016-07-06
      • 1970-01-01
      相关资源
      最近更新 更多