首页 > 解决方案 > 使用 LDA 减少训练集维度时的单样本预测问题

问题描述

我对数据使用的监督分类方法有问题。

假设我们正在使用 LDA 降维方法将维度从 100 减少到 2 后用数据 (N=70) 训练我们的算法。

现在,我们想预测第 71 个样本的类别,我们完全不知道它的类别。但是,它仍然有 100 个功能;所以我们必须减小它的尺寸。

乍一看似乎很容易:我可以使用第一个归约的变换特性。例如,在 python 中:

clf.fit(X,Y)
lda = LinearDiscriminantAnalysis(n_components=2)
flda = lda.fit(X, Y)
X_lda = flda.transform(X)

我已经存储了训练数据的拟合属性。X_p 是我的单个样本。因此,当我再次使用“flda”进行转换时,会使用相同的拟合信息:

X_p = flda.transform(X_p.reshape(1, -1))

但是,它不能正确预测!为了测试,我使用了我的第一个 N=70 数据。提取其中一个(所以现在,它是 N=69)。我使用第 70 个数据作为测试样本。而且它没有再次正确预测。

当我比较之前的数据 (N=70) 和新的数据 (N=69) 时,我看到每个数字都发生了变化!如果我没有遗漏什么(我希望我遗漏了,你可以告诉我我遗漏了什么)LDA 降维不适用于真正的机器学习应用,因为只有一个数据可以改变一切。

请注意,尽管所有数字都发生了显着变化(这意味着点的相对位置没有变化),但简化数据的图没有变化。

你知道在真实的机器学习应用中如何使用 LDA 降维吗?我必须做什么,按以下顺序测试一个样品:

不使用相同的转换特性?

标签: pythonmachine-learningscikit-learnlinear-discriminant

解决方案


推荐阅读