0

会社を辞めた同僚からいくつかのコードを引き継ぎましたが、彼が書いた電子メール開封予測が数週間実行されていないことに気付きました。ということで、実行してみました。この行に到達しました:

clf_predict = joblib.load(os.path.join(data_dir,'trained_random_forest.pkl'))

そして結果はこれでした:

File "/usr/local/lib/python2.7/distpackages/sklearn/externals/joblib/numpy_pickle.py", line 425, in load
obj = unpickler.load()
File "/usr/lib/python2.7/pickle.py", line 858, in load dispatch[key](self)
File "/usr/lib/python2.7/pickle.py", line 1133, in load_reduce
value = func(*args)
File "sklearn/tree/_tree.pyx", line 923, in sklearn.tree._tree.Splitter.__cinit__ (sklearn/tree/_tree.c:8329)
TypeError: __cinit__() takes exactly 5 positional arguments (4 given)

ロードの構文は、ドキュメントで見たものから私には正しいように見えます。したがって、私の最初の理論は、scikit-learn がアップグレードされ、現在の pickle ファイル (この時点で数か月前) を読み取れない可能性があるというものです。ただし、アップグレードされたかどうかはわかりません。sklearn を使用するのは初めてなので、問題が発生するかどうかはわかりません。あなたが与えることができる任意のポインタに感謝します

4

1 に答える 1

0

それがあなたの同僚のために働いていて、あなたの問題がsklearnのアップグレードによるものであると仮定します. Splitter init への追加の引数は、この commitで導入されました。pkl ファイルを以前のバージョンの sklearn にロードして、そこから取得することができます。

于 2015-05-27T11:01:27.810 に答える