首页 > 解决方案 > 使用 sklearn 的 CountVectorizer 尝试 toarray()/todense() 时出现内存错误

问题描述

我正在尝试使用 CountVectorizer 创建一个文档术语矩阵。我的数据报有大约 180k 行数据。这是我正在使用的代码:

from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer(stop_words='english')

X = cv.fit_transform(df.content) #X is a scipy sparse matrix
data_dtm = pd.DataFrame(X.toarray(), columns=cv.get_feature_names())

在这里我收到此错误:MemoryError: Unable to allocate 70.1 GiB for an array with shape (180399, 52142) and data type int64

我用 todense() 尝试了同样的事情以及:

data_dtm = pd.DataFrame(X.todense(), columns=cv.get_feature_names())

但还是一样。我知道问题出在toarray()/todense()我发现了几个关于在稀疏矩阵 上应用这些函数的类似问题,但无法得到有效的答案。例如,使用asarray()是对我不起作用的建议之一!

感谢你的帮助!

标签: pythonscikit-learnscipynlptext-mining

解决方案


推荐阅读