稀疏一个热编码特征的内存问题

memory issues for sparse one hot encoded features

我想为数据帧 df 中的一个热编码特征创建稀疏矩阵。但是我遇到了下面给出的代码的内存问题。 sparse_onehot 的形状是 (450138, 1508)

sp_features = ['id', 'video_id', 'genre']
sparse_onehot = pd.get_dummies(df[sp_features], columns = sp_features)
import scipy
X = scipy.sparse.csr_matrix(sparse_onehot.values)

我收到内存错误,如下所示。

MemoryError: Unable to allocate 647. MiB for an array with shape (1508, 450138) and data type uint8

我已经尝试 scipy.sparse.lil_matrix 并得到与上述相同的错误。

有什么有效的方法来处理这个问题吗? 提前致谢

尝试设置为 True sparse parameter:

sparsebool, default False Whether the dummy-encoded columns should be backed by a SparseArray (True) or a regular NumPy array (False).

sparse_onehot = pd.get_dummies(df[sp_features], columns = sp_features, sparse = True)

这将使用比默认表示更高效(但稍慢)的表示。