Python 3.x MemoryError:无法为具有形状(2873183704243)和数据类型float64的数组分配7.74TIB

Python 3.x MemoryError:无法为具有形状(2873183704243)和数据类型float64的数组分配7.74TIB,python-3.x,out-of-memory,tokenize,Python 3.x,Out Of Memory,Tokenize,我正在研究一个形状为(287318,3704243)的矩阵tfidf_矩阵,我试图将其重新用于以后的计算。这是我的全部代码 tfidf_vectorizer = TfidfVectorizer() # text shape is (287318,) tfidf_matrix = tfidf_vectorizer.fit_transform(text) X = tfidf_matrix.todense() # error

我正在研究一个形状为(287318,3704243)的矩阵
tfidf_矩阵
,我试图将其重新用于以后的计算。这是我的全部代码

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_矩阵
,以便于绘图,但在
X=tfidf_矩阵.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)

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

这是一个巨大的数据量。。。您可能需要找到一种方法来处理数据块。谢谢,这确实是唯一的方法