2016-07-20 6 views
1

私はtrainのpandas dfに2,000万行、testのpandas dfに約1,000万行を持っています。scikit-learnのLabelEncoder()メモリの問題

私はLabelEncoder()を適用したいdfの両方の列がありますが、私はラップトップとさらに64ギガバイトのAWSインスタンスでもMemory Errorを取得し続けます。

マッピングを失うことなく、これをチャンクで処理する方法はありますか?ここで

は私が使っていたコードです。

from sklearn.preprocessing import LabelEncoder 
le = LabelEncoder() 

for col in cols_to_encode: 
    le.fit(list(train[col])+list(test[col])) 
    train[col] = le.transform(train[col]) 
    test[col] = le.transform(test[col]) 

私は各50万行をサンプリングし、エラーなしでコードを実行することができたので、私はそれは構文エラーか何かではないと知っています。

任意の助けいただければ幸いです。

答えて

1

以前はLabelEncoderを使用していませんでしたが、Sklearnとの私の作業から、並列化に役立つオプションがあることがわかりました。この作業を並列化しようとしましたか?多くのSklearnクラシファイアが持っているn_jobsのようなパラメータを使うか、あるいはPythonマルチプロセッシングライブラリを使うかのどちらかです。

+0

私が最初にしたことは、 'n_jobs'パラメータをチェックすることでしたが、この関数には存在しないようです。通常、 'n_jobs'はヘルパー関数ではなく、分類子のためのものです。 –