【问题标题】:memory issues for sparse one hot encoded features稀疏一热编码特征的内存问题
【发布时间】:2020-12-09 12:18:51
【问题描述】:

我想为数据帧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 并得到与上述相同的错误。

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

【问题讨论】:

标签: python-3.x pandas scipy sparse-matrix amazon-sagemaker


【解决方案1】:

尝试设置为Truesparse parameter

sparsebool,默认为 False 虚拟编码列应由 SparseArray (True) 还是常规 NumPy 数组 (False) 支持。

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

这将使用比默认的更节省内存(但速度稍慢)的表示。

【讨论】:

  • 感谢它解决了错误。稍后我可以将其转换为scipy.sparse.csr.csr_matrix
猜你喜欢
  • 2017-08-21
  • 1970-01-01
  • 2020-11-27
  • 2013-09-25
  • 2015-08-27
  • 1970-01-01
  • 2019-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多