sklearn中PCA中的n_components> n_samples时如何解决问题?

时间:2019-03-31 18:26:34

标签: machine-learning scikit-learn pca

我有一个大尺寸的数据集,并在建立二进制分类模型之前在sklearn中使用了PCA进行降维。我在初始化n_components=225时设置了PCA(),以获得大约80%的解释方差比。我的方法在测试数据上效果很好,因此我将pca保存为pickle,作为应用程序模型交付的一部分。

最近,一位同事提出了一个问题,即我的方法不适用于尺寸小于225的数据集。具体来说,我的pca pickle无法转换尺寸小于225的数据集,因为python抛出一个错误,提示n_components > n_samples 。我发现这是sklearn的非常奇怪的行为。根据我在课堂上学到的理论,在进行分类之前,应通过训练模型的原理组件将新数据集转换为低维空间。因此,无论新数据集的大小如何,它都应该起作用。

我在stackoverflow上进行了搜索,发现了this个帖子,但是我觉得这更多是关于培训方面的,而不是我所拥有的应用程序方面。每天,我们的网站上都有大约20个新数据点,我需要对它们进行分类。

到目前为止,我已经考虑了以下问题:

  1. 复制新数据点以确保我拥有225个以上。
  2. 完全放弃pca,只保留高维度。我认为这对于模型训练来说是一个非常糟糕的主意。
  3. 使用其他维度方法,例如LDA。

请让我知道您的想法。谢谢!

0 个答案:

没有答案