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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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