scikit学习增量pca混乱

时间:2017-07-10 05:14:32

标签: python scikit-learn pca

我有一个带有(n_samples,n_features)=(466000,4338093)的数据集。 我想对这些数据执行PCA,以便利用Python的Scikit学习增量PCA。

由于数据量巨大,因此将其分成466个块,每个块有1000个样本,即每个块将具有(n_samples,n_features)=(1000,4338093)。每个块都存储为hickle文件。此外,矩阵采用稀疏格式。

我已将PCA的n_components设置为min(n_samples,n_features),即466000.

以下是我如何处理2个块:

import hickle
from sklearn.decomposition import IncrementalPCA
import os

fv_list = list()

for file_name in os.listdir("PATH_TO_DIR"):
    if file_name.endswith(".hkl"):
        fv_list.append(os.path.join("PATH_TO_DIR", file_name))

data_shape = hickle.load(open(fv_list[0])).shape
ipca = IncrementalPCA(n_components=min(len(fv_list) * data_shape[0], data_shape[1]))

for each_chunk in fv_list:
    part = hickle.load(open(each_chunk))
    ipca.partial_fit(part.todense())

现在,当我调用pca的部分拟合方法时,对于第二次迭代,我得到以下错误:

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

我很担心为什么会出现这个ValueError。我的做法错了吗?

0 个答案:

没有答案