IncrementalPCA & partial_fit – 组件数量

我使用Python处理大约4000张手表图片(例如:watch_1, watch_2)。这些图片是RGB格式,分辨率为450×450。我的目标是找出其中最相似的几块手表。为此,我使用了scikit_learn中的IncrementalPCApartial_fit来处理这些大数据,我的电脑内存为26GB(另见:SO_Link_1, SO_Link_2)。我的源代码如下:

然而,当我开始运行这个程序处理40张手表图片时,在i = 1时得到了以下错误:

ValueError: Number of input features has changed from 4 to 6 between calls to partial_fit! Try setting n_components to a fixed value.

然而,显然我在编写ipca = IncrementalPCA(n_components=6)时已经将n_components设置为6,但不知为何ipcai = 0时认为chunk_size = 4是组件数量,而在i = 1时又变为6。

为什么会发生这种情况?

我该如何解决这个问题?


回答:

这似乎符合PCA背后的数学原理,因为当n_components > n_samples时,它将变得病态条件。

你可能有兴趣阅读这个(错误消息的引入)和相关讨论

尝试增加批量大小/块大小(或降低n_components)。

(总的来说,我对这种方法也有些怀疑。我希望你已经在一些小型示例数据集上使用批量PCA进行了测试。看起来你的手表图片在几何方面没有进行预处理:裁剪;可能还需要进行直方图/颜色归一化。)

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注