使用LDA减少训练集尺寸时的单个样本预测问题

时间:2018-10-13 20:39:40

标签: python machine-learning scikit-learn linear-discriminant

我对用于数据的监督分类方法感到麻烦。

让我们考虑使用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降维吗?我必须怎么做才能按以下顺序测试一个样本:

  • 将维度减少到2以获取训练数据
  • 将测试数据的尺寸减小为2
  • 预测!

不使用相同的转换特性?

0 个答案:

没有答案