我有一个大尺寸的数据集,并在建立二进制分类模型之前在sklearn中使用了PCA进行降维。我在初始化n_components=225
时设置了PCA()
,以获得大约80%的解释方差比。我的方法在测试数据上效果很好,因此我将pca保存为pickle
,作为应用程序模型交付的一部分。
最近,一位同事提出了一个问题,即我的方法不适用于尺寸小于225的数据集。具体来说,我的pca pickle无法转换尺寸小于225的数据集,因为python抛出一个错误,提示n_components > n_samples
。我发现这是sklearn的非常奇怪的行为。根据我在课堂上学到的理论,在进行分类之前,应通过训练模型的原理组件将新数据集转换为低维空间。因此,无论新数据集的大小如何,它都应该起作用。
我在stackoverflow上进行了搜索,发现了this个帖子,但是我觉得这更多是关于培训方面的,而不是我所拥有的应用程序方面。每天,我们的网站上都有大约20个新数据点,我需要对它们进行分类。
到目前为止,我已经考虑了以下问题:
请让我知道您的想法。谢谢!