如何将一个大的稀疏矩阵转换成一个数组(细节如下)?

2024-04-24 02:52:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个稀疏的特征矩阵,它是使用sklearn进行以下操作的结果:

from sklearn.feature_extraction.text import CountVectorizer

vectorizer = CountVectorizer(analyzer = "word",tokenizer = None,preprocessor = None,stop_words = None,max_features = 5000) 

train_data_features = vectorizer.fit_transform(y)

转换为连续数组表示将具体化内存中的所有零,结果大小为:

train_data_features.shape[0] * train_data_features.shape[1] * train_data_features.dtype.itemsize / 1e6

结果是:`6242.4

这是8GB,相比之下,原始稀疏表示不到1MB。 那么,如何解决这个问题,以便我能够有效地将得到的数组拟合到随机林分类器中呢?你知道吗

`


Tags: textfromnonedatatrain矩阵特征数组
1条回答
网友
1楼 · 发布于 2024-04-24 02:52:02

试试这个:

m = np.memmap('train_data_features_dense.mmap', dtype=train_data_features.dtype, mode='w+', shape=train_data_features.shape)
train_data_features.todense(out=m)
# Some work with m here, if you want, reading, writing, etc
# Better to call delete when you've done all work with it, del will flush buffers automatically
del m
# If you want to load memmap in another script
m = np.memmap('train_data_features_dense.mmap', dtype=train_data_features.dtype, mode='r+', shape=train_data_features.shape)

但是正如@yangjie上面所说的,当你可以的时候,你应该对稀疏矩阵进行运算。你知道吗

相关问题 更多 >