Python scikit学习使用大数据集进行矢量化

Python scikit学习使用大数据集进行矢量化,python,numpy,machine-learning,scikit-learn,Python,Numpy,Machine Learning,Scikit Learn,我的磁盘上有9GB的分段文档,我的vps只有4GB内存 如何在初始化时不加载所有语料库的情况下对所有数据集进行矢量化?是否有任何示例代码 我的代码如下: contents = [open('./seg_corpus/' + filename).read() for filename in filenames] vectorizer = CountVectorizer(stop_words=stop_words) vectorizer.fit(contents) 尝试此方

我的磁盘上有9GB的分段文档,我的vps只有4GB内存

如何在初始化时不加载所有语料库的情况下对所有数据集进行矢量化?是否有任何示例代码

我的代码如下:

contents = [open('./seg_corpus/' + filename).read()
            for filename in filenames]
vectorizer = CountVectorizer(stop_words=stop_words)
vectorizer.fit(contents)

尝试此方法,而不是将所有文本加载到内存中,您只能将文件的句柄传递到
fit
方法中,但必须在
CountVectorizer
构造函数中指定
input='file'

contents = [open('./seg_corpus/' + filename)
        for filename in filenames]
vectorizer = CountVectorizer(stop_words=stop_words, input='file')
vectorizer.fit(contents)

非常感谢。另一个问题,在scikit learn的KMeans中是否有一些技巧,比如“input='file'”,我也不能将稀疏矩阵加载到内存中。@KalenBlue,很奇怪你不能将稀疏矩阵加载到内存中,它有这么大吗?或者当您试图在其上使用KMeans时,是否会发生一些错误?因为它看起来更像是程序员在无法将稀疏矩阵加载到内存中时犯的错误。无论如何,您可以尝试将矩阵存储在不同的批中,分别加载它们,并使用部分拟合方法使用
MiniBatchKMeans
。或者(更简单的方法)压缩特征空间,使在内存中保持稀疏矩阵成为可能。例如,尝试删除由过于频繁的N-文法创建的所有特征,或者太稀有。您可以使用Max特征、Max、Df和MimIdf参数来使计数向量的结果矩阵更小。或者考虑使用不保存词汇的替代向量器,例如HashingVectorizer。我相信。@IbraimGaniev我已经将语料库矢量化到文件系统中了。每个向量大约2MB,无需压缩。而且有8000个文档,所以我的内存不够大。我将使用迭代器来