将稀疏矩阵转换为稠密矩阵时出现Python内存错误

将稀疏矩阵转换为稠密矩阵时出现Python内存错误,python,numpy,matrix,Python,Numpy,Matrix,我想用python计算文档的Tfidf值。我的基本方法如下: from sklearn.feature_extraction.text import TfidfVectorizer tfidf_vectorizer = TfidfVectorizer(max_df=0.5,stop_words="english") tfidf_matrix = tfidf_vectorizer.fit_transform(clean_tweet) tfidf_matrix=tfidf_matrix.astyp

我想用python计算文档的Tfidf值。我的基本方法如下:

from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vectorizer = TfidfVectorizer(max_df=0.5,stop_words="english")
tfidf_matrix = tfidf_vectorizer.fit_transform(clean_tweet)

tfidf_matrix=tfidf_matrix.astype('float32')
termss = tfidf_vectorizer.get_feature_names()

toarry=tfidf_matrix.todense()# this step return a Memoryerror.
工作非常好,但不幸的是,当我尝试将稀疏矩阵转换为稠密的
toarry=tfidf\u matrix.todense()
,python返回一个
内存错误。tfidf_矩阵的维数为(6602141320297),它是一个稀疏矩阵。此外,我有100G可用内存。我已经搜索了一些解决方案,如使用
np.memmap
HDF5Store
,但我对此不确定

那么,有人知道如何在没有内存错误的情况下将稀疏矩阵转换为稠密矩阵吗

附言。 我剩下的代码是

flattern=toarry.sum(axis=0)
#flattern= map(sum,zip(*toarry))
tfidf=np.array(flattern).reshape(-1,).tolist()
merge={'terms':termss,
       'tfidf':tfidf}
tfidf_object=pd.DataFrame(merge)
#tfidf_object.index.name="termss"
#print termss[-10:],"____",tfidf[-10:]
tfidf_objects=tfidf_object.sort_index(by=["tfidf"],ascending=False)

我想把密集矩阵转换成一维矩阵,这样我就可以得到前100个tfidf字。

6602141*320297*4字节的数字是7.6 TB,不是吗?这就是你使用稀疏矩阵的原因。那你为什么要将其转换为稠密矩阵?@AndrasDeak谢谢你的回答,我已经完善了这个问题来解释我的目的。简言之,我只想将稠密矩阵转换为一维矩阵,所以我可以得到前100个tfidf单词。你试过对稀疏矩阵本身进行求和吗?简短的回答是,你不能生成这么大的密集数组;要么让稀疏矩阵本身起作用,要么处理一个较小的问题