2017-07-26 9 views
3

非常に大きなCSVファイルをPandasで使い始め、最終的にはXGBoostで機械学習ができるようになりました。大きな(+15gb)CSVデータセットとPandas/XGBoostを使って作業する

私のデータのチャンクを管理するために、mySQLまたはいくつかのsqlliteフレームワークを使用することに間違いがあります。私の問題は、後でマシンの学習面で、そしてモデルを訓練するために一度にチャンクで読み込むことです。

私の他の考えは、パンダをオフにして構築されたDaskを使うことでしたが、XGBoost機能も持っていました。

私は最良の出発点が何であるか分かりませんし、意見を求めることを望んでいました!私はDaskに向かっていますが、私はまだそれを使用していません。

+1

15GBは何もありません。 sqliteをスピンアップすると設定されます。 – drum

+0

それは多かれ少なかれ4 x 15 - 18 GBです。しかし、おかげさまで、私はまだ大きなデータについてはあまり知らないのです。 – Kam

+0

興味深いかもしれないxgboostとcsvデータを含むdaskの例:http://matthewrocklin.com/blog/work/2017/03/28/dask-xgboost – mdurant

答えて

0

私はこれを試していませんが、h5pyを使用してhdf5ファイルにデータをロードします。このライブラリは、データをディスクに保存しますが、numpy配列のようにアクセスします。したがって、データセットのメモリに制約はなくなりました。

XGBoostの部分では、sklearn APIを使用し、h5pyオブジェクトをXの値として渡します。 h5pyオブジェクトを動作させるべきである入力用の配列のようなnumpyを受け入れるので、sklearn APIをお勧めします。 subsampleに小さな値を使用してください。そうしないと、メモリが不足する可能性があります。

2

This blogpostは、大きなCSVデータセットでXGBoostを使用した例です。しかし、十分なRAMを備えた分散クラスタを使用することで、データセット全体を一度にメモリに収めることができました。多くのdask.dataframe操作は小さなスペースで動作することができますが、私はXGBoostのトレーニングがその中の一つであるとは思わないでしょう。 XGBoostは、すべてのデータが常に利用可能である場合に最適に動作するようです。

関連する問題