2016-12-29 8 views
1

私の研究にはランダムフォレスト(Anikonda、Python 3と一緒にインストールされたscikit-learn 0.18.1)を使用しようとしています。私のデータセットは約325000のサンプルを含み、それぞれ11個のフィーチャ(すべてゼロ以外の値)で構成されています。 私は次の呼び出し(max_depthが使用するメモリの量を制限するために10に設定されている)とのランダムフォレストを作成します。私はランダムフォレストはあまりにも多くのメモリを使用します

cfl = sk_ensemble.RandomForestClassifier(n_estimators=100, n_jobs=10, verbose=500, max_depth=10) 

残念ながら、ランダムフォレスト建物はメモリの膨大な量を必要とします(私の処分で128 GB、100%が使用されます(topを使用して情報を取得しました))。 PythonはMemoryErrorを発生させます。

私は次のように私の行列を作成します。

np.array(Xl, dtype=np.float32) 

どのようにそれは私がこのかなり軽作業用のRAM以上の128ギガバイトを必要とすることは可能でしょうか? (n_jobs=1が、私はまだメモリの問題を持っていますが、その後、使用可能なメモリよりも多くが使用されている予測のための場合でも...)

デバッグのために、私は、このコマンドを開始しました:

dmesg | grep -E -i -B30 'killed process' 

と次の結果が得られました:

[1947333.164124] [ 1193] 81 1193  6137  52  16  81   -900 dbus-daemon 
[1947333.164126] [ 1212]  0 1212 81781  73  80  5004    0 firewalld 
[1947333.164127] [ 1213]  0 1213 31556  22  17  133    0 crond 
[1947333.164129] [ 1215]  0 1215  6461  0  17  62    0 atd 
[1947333.164131] [ 1228]  0 1228 27509  1  10  31    0 agetty 
[1947333.164133] [ 1230]  0 1230 108909  60  65  487    0 NetworkManager 
[1947333.164134] [ 1569]  0 1569 93416  153  91  181    0 rsyslogd 
[1947333.164136] [ 1576]  0 1576 138290  63  87  2613    0 tuned 
[1947333.164138] [ 1577]  0 1577 28335  1  11  37    0 rhsmcertd 
[1947333.164140] [ 1582]  0 1582 20617  15  41  201   -1000 sshd 
[1947333.164142] [ 1589]  0 1589 26978  8  7  28    0 rhnsd 
[1947333.164143] [ 2221]  0 2221 22244  0  42  256    0 master 
[1947333.164146] [ 2267] 89 2267 22287  0  42  251    0 qmgr 
[1947333.164149] [19994]  0 19994 36365  2  73  326    0 sshd 
[1947333.164151] [19996] 1002 19996 36365  0  68  329    0 sshd 
[1947333.164153] [19997] 1002 19997 13175  0  29  142    0 sftp-server 
[1947333.164155] [20826]  0 20826 36365  98  72  233    0 sshd 
[1947333.164156] [20828] 1002 20828 36400  114  69  220    0 sshd 
[1947333.164158] [20829] 1002 20829 28872  46  13  68    0 bash 
[1947333.164160] [20862]  0 20862 36365  6  73  324    0 sshd 
[1947333.164161] [20877] 1002 20877 36400  38  70  295    0 sshd 
[1947333.164163] [20878] 1002 20878 28846  0  13  110    0 bash 
[1947333.164164] [20899] 1002 20899 39521  198  30  72    0 top 
[1947333.164166] [20929]  0 20929 36379  116  74  215    0 sshd 
[1947333.164168] [20931] 1002 20931 36417  118  71  213    0 sshd 
[1947333.164169] [20932] 1002 20932 28874  34  14  81    0 bash 
[1947333.164171] [20972] 1002 20972 37348  229  27  468    0 vim 
[1947333.164172] [20996] 89 20996 22270  83  44  164    0 pickup 
[1947333.164174] [21075] 1002 21075 67384359 31985935 71321 4435535    0 python3 
[1947333.164176] Out of memory: Kill process 21075 (python3) score 974 or sacrifice child 
[1947333.164190] Killed process 21075 (python3) total-vm:269537436kB, anon-rss:127943740kB, file-rss:0kB, shmem-rss:0kB 

答えて

1

[OK]をクリックしてこの問題を解決しました。

私は回帰問題(分類問題ではない)に取り組んでいました。

RandomForestClassifierの代わりにRandomForestRegressorを使用すると、私の記憶上の問題が解決されました。

関連する問題