使用大型(+15 gb)CSV数据集和Pandas / XGBoost

时间:2017-07-26 03:24:23

标签: python pandas machine-learning xgboost dask

我正在尝试找到一种方法,开始在Pandas中使用非常大的CSV文件,最终能够使用XGBoost进行一些机器学习。

我在使用mySQL或某些sqllite框架来管理我的数据块之间徘徊不前;我的问题是稍后的机器学习方面,以及一次加载块以训练模型。

我的另一个想法是使用由{Pandas构建的Dask,但也具有XGBoost功能。

我不确定最佳起点是什么,并希望征求意见!我倾向于Dask但我尚未使用它。

2 个答案:

答案 0 :(得分:3)

This blogpost在大型CSV数据集上使用XGBoost进行示例。但是,它通过使用具有足够RAM的分布式集群来立即将整个数据集拟合到内存中。虽然许多dask.dataframe操作可以在狭小的空间内运行,但我并不认为XGBoost培训可能是其中之一。当所有数据始终可用时,XGBoost似乎运行得最好。

答案 1 :(得分:0)

我还没试过,但我会使用h5py将您的数据加载到hdf5文件中。这个库允许您将数据存储在磁盘上,但可以像numpy数组一样访问它。因此,您不再受数据集内存的限制。

对于XGBoost部分,我将使用sklearn API并将h5py对象作为X值传递。我推荐使用sklearn API,因为它接受numpy like数组用于输入,这应该让h5py对象起作用。确保为subsample使用较小的值,否则您可能会快速耗尽内存。