scipy.sparse矩阵到xgboost dmatrix转换:非常慢

时间:2017-10-25 14:13:59

标签: python performance scipy sparse-matrix xgboost

我正在尝试使用python中的xgboost训练渐变树提升模型。对于我的应用程序,我构建数据批处理以“动态”提供模型。现在代码太慢了,瓶颈似乎是scipy.sparse到dmatrix的转换:

type(sparse_batch[0]) #scipy.sparse.csr.csr_matrix
sparse_batch[0].shape #(1035500, 317)

%%timeit -n1 -r1
xgb.DMatrix(sparse_batch[0], feature_names=model_features)
1 loop, best of 1: 1min 31s per loop

与numpy.ndarray矩阵相同的操作似乎非常快:

type(dense_batch[0]) #numpy.ndarray
dense_batch[0].shape #(1035500, 317)

%%timeit -n1 -r1
xgb.DMatrix(dense_batch[0], feature_names=model_features)
1 loop, best of 1: 8.08 s per loop

我想知道为什么会发生这种情况,我能做些什么来使稀疏转换更快?不幸的是,我不能总是从密集数组初始化,因为有时候批处理不适合内存。

0 个答案:

没有答案