我試圖找到一種方式開始在熊貓中使用非常大的CSV文件,最終能夠使用XGBoost進行一些機器學習。使用大型(+15 gb)CSV數據集和Pandas/XGBoost
我在使用mySQL或一些sqllite框架來管理我的數據塊之間徘徊;我的問題是稍後在機器學習方面的問題,以及一次加載大塊數據以訓練模型。
我的另一個想法是使用Dask
,它由Pandas構建而成,但也具有XGBoost功能。
我不確定什麼是最好的出發點,並希望徵求意見!我傾向於Dask
,但我還沒有使用它。
我試圖找到一種方式開始在熊貓中使用非常大的CSV文件,最終能夠使用XGBoost進行一些機器學習。使用大型(+15 gb)CSV數據集和Pandas/XGBoost
我在使用mySQL或一些sqllite框架來管理我的數據塊之間徘徊;我的問題是稍後在機器學習方面的問題,以及一次加載大塊數據以訓練模型。
我的另一個想法是使用Dask
,它由Pandas構建而成,但也具有XGBoost功能。
我不確定什麼是最好的出發點,並希望徵求意見!我傾向於Dask
,但我還沒有使用它。
我還沒有試過這個,但是我會使用h5py將你的數據加載到hdf5文件中。這個庫讓你將數據存儲在磁盤上,但是像數組一樣訪問它。因此,您不再受數據集內存的限制。
對於XGBoost部分,我將使用sklearn API並傳入h5py對象作爲X
值。我推薦使用sklearn API,因爲它接受像數組這樣的numpy,以便讓h5py對象工作。請確保爲subsample
使用較小的值,否則您的內存可能會很快耗盡。
This blogpost通過在大型CSV數據集上使用XGBoost的示例。但是,它通過使用具有足夠RAM的分佈式集羣來實現這一點,以便將整個數據集同時放入內存中。雖然許多dask.dataframe操作可以在小空間操作,但我不認爲XGBoost培訓很可能是其中之一。當所有數據一直可用時,XGBoost似乎運行得最好。
15GB不算什麼。旋轉sqlite,你會被設置。 – drum
總共大概是4 x 15 - 18 GB - 但是由於這個建議,我對「大數據」還不太瞭解。 – Kam
dask帶xgboost和csv數據的例子,您可能會感興趣:http://matthewrocklin.com/blog/work/2017/03/28/dask-xgboost – mdurant