基于matlab的fisher线性判别及感知器判别_R语言线性分类判别LDA和二次分类判别QDA实例...

R语言实例链接:

拓端数据科技 / Welcome to tecdat​tecdat.cn
5b54b277e6281834888666f86d1c28c1.png

一、线性分类判别

对于二分类问题,LDA针对的是:数据服从高斯分布,且均值不同,方差相同

概率密度:

38ce444407f9e54c9dce1447b2a6cf07.png

p是数据的维度。

分类判别函数:

efc5cd8a5a1598800023c8d41c6d3e8c.png

可以看出结果是关于x的一次函数:wx+w0,线性分类判别的说法由此得来。

参数计算:

1abed00ee306a17bb33cb4d959a54250.png

二、二次分类判别

对于二分类问题,QDA针对的是:数据服从高斯分布,且均值不同,方差不同

数据方差相同的时候,一次判别就可以,如左图所示;但如果方差差别较大,就是一个二次问题了,像右图那样。

ca34b8bb78ded1f7b88939d4e65790eb.png

从sklearn给的例子中,也容易观察到:

7cd38c321c0907068c2b2659825e1ea1.png

QDA对数据有更好的适用性,QDA判别公式:

015b8eb547749035321a051aa9b72811.png

三、Fisher判据

  A-Fisher理论推导

Fisher一个总原则是:投影之后的数据,最小化类内误差,同时最大化类间误差

b1475145faaa04f2994e09324151563a.png

其中,

3db6f94f7cd705aad42610b03f1525ec.png

分别对应投影后的类均值。

52675cb75b94e93e1497e26688ea9052.png

对应投影后的类内方差。

重写类内总方差、类间距离:

fbc1c419413e1f085a47533ad2a2fd0e.png

准则函数重写:

10d62877d0015de90137a8c75e6e1a4b.png

容易求解:

84f5eeabade4b6cd733fbfca686992d9.png

其中

4233a45e4f15728da65465a625ee605c.png

常借助SVD求解:Sw = U∑VT,Sw-1 = U∑-1VT,借助特征值分解也是可以的。


参考文献

1.用SPSS估计HLM层次线性模型模型

2.R语言线性判别分析(LDA),二次判别分析(QDA)和正则判别分析(RDA)

3.基于R语言的lmer混合线性回归模型

4.R语言Gibbs抽样的贝叶斯简单线性回归仿真分析

5.在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析

6.使用SAS,Stata,HLM,R,SPSS和Mplus的分层线性模型HLM

7.R语言中的岭回归、套索回归、主成分回归:线性模型选择和正则化

8.R语言用线性回归模型预测空气质量臭氧数据

9.R语言分层线性模型案例

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我并不能提供文档或文件下载。但是,我可以简单地介绍一下 Fisher 线性判别分析以及如何在 MATLAB 中实现 Fisher 检验。 Fisher 线性判别分析是一种常见的分类方法,它可以用于将数据集投影到低维空间中,以便于可视化和分类Fisher 线性判别分析的目标是找到一个投影矩阵,使得在投影后的低维空间中,不同类之间的距离尽可能地大,同一类之间的距离尽可能地小。这个投影矩阵可以通过计算类内散度矩阵和类间散度矩阵的比值来获得。 在 MATLAB 中,可以使用 `classify` 函数来进行 Fisher 线性判别分析。这个函数需要输入数据集和类别标签,并且可以选择是否对数据进行标准化处理。下面是一个简单的示例代码: ```matlab load fisheriris X = meas(:,3:4); Y = species; % 标准化 X = (X - mean(X)) ./ std(X); % Fisher 线性判别分析 ldaModel = fitcdiscr(X,Y); % 绘制分类结果 h = gscatter(X(:,1),X(:,2),Y,'rbg','ov^',[],'off'); hold on f = @(x,y) predict(ldaModel,[x,y]); ezplot(f,[min(X(:,1)) max(X(:,1)) min(X(:,2)) max(X(:,2))]); hold off ``` 这个示例代码加载了鱼类数据集中的第三列和第四列作为样本特征,加载了鱼类数据集中的物种作为类别标签。然后使用 `fitcdiscr` 函数进行 Fisher 线性判别分析,得到一个 LDA 模型。最后,使用 `gscatter` 函数将样本点绘制出来,使用 `ezplot` 函数绘制分类边界。 希望这个简单的示例代码可以帮助你理解 Fisher 线性判别分析和在 MATLAB 中的实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值