【发布时间】:2021-01-10 06:40:34
【问题描述】:
祝大家...
我在 windows 操作系统中使用 python 分析了一个大的推文数据集。当我尝试将数据转换为向量 (tfidf) 时,它给了我这个错误消息:
MemoryError 无法分配 298。形状为 (439563, 90889) 且数据类型为 float64 的数组的 Gib
我该如何解决这个问题?
以下是使用的代码:
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform("MyData")
tf_idf = pd.DataFrame(data = X.toarray(), columns=vectorizer.get_feature_names())
final_df = tf_idf
print("{} rows".format(final_df.shape[0]))
final_df.T.nlargest(5, 0)
【问题讨论】:
-
解决方案是不要一次将所有内容读入内存,或者购买(大量)更多 RAM。如果您提供一些代码,有人可以为您提供更具体的帮助
-
由于您只查找行数和最大的 5 个值,因此您可以使用迭代器遍历
TfidfVectorizer并随时收集前 5 个,而不是计算和将所有内容收集到一个数组中,然后从整体中取出最大的 5 个。
标签: python artificial-intelligence data-science data-mining data-analysis