python - 使用 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()是对我不起作用的建议之一!
感谢你的帮助!
解决方案
推荐阅读
- jxbrowser - 我们可以与 jxbrowser 共享屏幕吗?
- spring-boot - Spring Cache 属性提取
- python - 我应该如何编写记录器代理?
- spring - 字符串索引超出范围:当存储过程在 Spring Boot 中返回空值时为 0
- restlet - Restlet 仍然是一个可行的 Java 框架吗?
- r - 从 r 中的循环中自定义绘图的标题
- python - 我们可以在 Python 循环中执行反向串联吗?
- linux - 启用 EAP 的 NetworkManager-pptp SSTP VPN 访问?
- linux - 这如何计算文件中的行数?no_of_lines=`<$file wc -l`
- javascript - 如何为粒子添加径向渐变效果?