MemoryError:无法为形状为(287318、3704243)、数据类型为float64的数组分配7.74 TiB



我正在处理一个形状为(2873183704243(的矩阵tfidf_matrix,我正试图将其重新用于以后的计算。这是我的完整代码

tfidf_vectorizer = TfidfVectorizer()                                    
# text shape is (287318,)
tfidf_matrix  = tfidf_vectorizer.fit_transform(text)
X = tfidf_matrix.todense()  # error here
pca_num_components = 2
reduced_data = PCA(n_components=pca_num_components).fit_transform(X)

出于绘图目的,我试图通过PCA减少tfidf_matrix,但我在X = tfidf_matrix.todense()行遇到内存错误问题,称

MemoryError: Unable to allocate 7.74 TiB for an array with shape (287318, 3704243) and data type float64

有什么办法解决这个问题吗?

一个可能的解决方案(尽管不是完美的(是随机选择特定数量的行,并对其执行PCA,如下所示。

max_items = np.random.choice(range(tfidf_matrix.shape[0]), size=3000, replace=False)
X=tfidf_matrix[max_items,:].todense()   
pca = PCA(n_components=2).fit_transform(X)

如果需要,我们可以更改size参数

相关内容

最新更新