scikit中的错误 - 学习LDA功能 - 图表显示非零相关

时间:2014-07-28 20:06:20

标签: python r scikit-learn lda

我使用scikit-learn的LDA函数做了一些LDA,我在结果图中注意到LD之间存在非零相关性。

from sklearn.lda import LDA
sklearn_lda = LDA(n_components=2)
transf_lda = sklearn_lda.fit_transform(X, y)

这非常令人担忧,所以我回去使用Iris数据集作为参考。我还在scikit文档中找到了相同的非零相关LDA图,我可以重现它。

无论如何,要概述一下它的外观

  • 左上角的情节:这里显然有问题
  • 左下图:这是原始数据,不是正确的方法,而是一次尝试复制scikit的结果
  • 右上角和右下角的情节:这就是它实际上应该是什么样子。

enter image description here

我已将代码放入an IPython notebook,如果您想看一下并亲自尝试。

与左上角的(错误)结果一致的scikit文档:http://scikit-learn.org/stable/auto_examples/decomposition/plot_pca_vs_lda.html

R中的LDA,显示在右下角:http://tgmstat.wordpress.com/2014/01/15/computing-and-visualizing-lda-in-r/

2 个答案:

答案 0 :(得分:0)

好的,现在,正在发生的事情(基于discussion GitHub)是scikit-learn中的LDA没有标准正交基础。

我想发布这个作为答案,以便我现在关闭这个问题。感谢您的讨论!

Scikit学习

enter image description here

from sklearn.decomposition import PCA
sklearn_pca = PCA(n_components=2)
transf_pca = sklearn_pca.fit_transform(transf_lda)

enter image description here

循序渐进的方法

为了进行比较,这里再次采用逐步的方法

enter image description here

答案 1 :(得分:0)

LDA的变换函数确实存在一个错误:在实际变换后错误地应用了分类器权重。这已得到修复here。这些更改已合并到主分支中,因此它应该是scikit-learn的1.6版本。