我正在尝试找到一种方法,开始在Pandas中使用非常大的CSV文件,最终能够使用XGBoost进行一些机器学习。
我在使用mySQL或某些sqllite框架来管理我的数据块之间徘徊不前;我的问题是稍后的机器学习方面,以及一次加载块以训练模型。
我的另一个想法是使用由{Pandas构建的Dask
,但也具有XGBoost功能。
我不确定最佳起点是什么,并希望征求意见!我倾向于Dask
但我尚未使用它。
答案 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
使用较小的值,否则您可能会快速耗尽内存。