MemoryError: Unable to allocate 7.74 TiB for an array with shape (287318, 3704243) and data type float64
MemoryError: Unable to allocate 7.74 TiB for an array with shape (287318, 3704243) and data type float64
我正在处理形状为 (287318, 3704243) 的矩阵 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
参数
我正在处理形状为 (287318, 3704243) 的矩阵 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
参数