使用KMeans聚集大量文本文件

时间:2019-03-06 05:33:32

标签: python memory cluster-analysis

我有一个预提取文本文件的文件夹(来自图像,pdf,docs等的数据)。全部约222mb或27,600个文档。

该文件夹被编译成字典:

data = {'file_name':'document text',...}

然后我将字典矢量化

X = vectorizer.fit_transform(documents.values())
X = X.toarray()

将“ X”导出到文本文件表明它的大小约为7gb!

我尝试使用PCA将矢量化数据转换为2D阵列

pca = PCA(n_components=2)
two_dim = pca.fit_transform(X)

我开始出现以下错误:

two_dim = pca.fit_transform(vectorized_data)
array = np.array(array, dtype=dtype, order=order)
MemoryError

据我所知,我正在使用64位Python。我运行了$ py -0,而星号紧挨着64位版本。

我有32Gb内存,一个Intel i7-8700K

2 个答案:

答案 0 :(得分:0)

您可以尝试以可管理的批量大小使用sklearn的IncrementalPCA,也可以使用具有线性激活功能(https://stats.stackexchange.com/questions/120080/whatre-the-differences-between-pca-and-autoencoder)的自动编码器,因为也可以批量训练自动编码器。但是,大小的增加是由于文本数据的稀疏性,因为矢量化生成的矩阵主要包含零。而且这种增加使您无法处理PCA。希望对您有所帮助。

答案 1 :(得分:0)

为什么要toarray

文本数据是稀疏,您要使用稀疏矩阵。

您还将希望使用 spherical k均值而非标准kmeans。

PCA也不是个好主意。

相关问题