scikit-learn LDA函数中的错误 - 绘图显示非零相关性
我用scikit-learn的LDA功能做了一些线性判别分析,结果发现我的图表中,LD(线性判别)之间有非零的相关性。
from sklearn.lda import LDA
sklearn_lda = LDA(n_components=2)
transf_lda = sklearn_lda.fit_transform(X, y)
这让我很担心,所以我回去用鸢尾花数据集作为参考。我还在scikit的文档中找到了同样的非零相关性LDA图,我也能复现出来。
总之,给你一个大概的样子:
- 左上角的图:这里明显有问题。
- 左下角的图:这是用原始数据做的,不是正确的方法,但这是我尝试复现scikit结果的一种方式。
- 右上角和右下角的图:这才是应该有的样子。
我把代码放在了一个IPython笔记本里,如果你想看看并自己试试,可以去看看。
与左上角(错误)结果一致的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
好的,现在我们来看看发生了什么事情(根据GitHub上的讨论)。在scikit-learn中的LDA(线性判别分析)没有一个正交归一的基底。
我想把这个作为答案发布,这样我就可以关闭这个问题了。感谢大家的讨论!
Scikit-learn
from sklearn.decomposition import PCA
sklearn_pca = PCA(n_components=2)
transf_pca = sklearn_pca.fit_transform(transf_lda)
逐步方法
为了比较,这里再次展示逐步的方法。
0
确实在LDA的转换功能里有个错误:分类器的权重在实际转换之后错误地被应用了。这个问题已经在这里修复了。修改已经合并到主分支,所以在scikit-learn的1.6版本中应该能看到这个修复。