web-dev-qa-db-ja.com

pythonランダムフォレストモデルをファイルに保存

Rでは、「ランダムフォレスト」モデルを実行した後、save.image("***.RData")を使用してモデルを格納できます。その後、モデルをロードして直接予測を行うことができます。

Pythonでも同様のことができますか?モデルと予測を2つのファイルに分けます。そしてモデルファイルで:

rf= RandomForestRegressor(n_estimators=250, max_features=9,compute_importances=True)
fit= rf.fit(Predx, Predy)

rfまたはfitを返そうとしましたが、モデルを予測ファイルに読み込めません。

Sklearnランダムフォレストパッケージを使用してモデルと予測を分離できますか?

21
user3013706
...
import cPickle

rf = RandomForestRegresor()
rf.fit(X, y)

with open('path/to/file', 'wb') as f:
    cPickle.dump(rf, f)


# in your prediction file                                                                                                                                                                                                           

with open('path/to/file', 'rb') as f:
    rf = cPickle.load(f)


preds = rf.predict(new_X)
28
Jake Burkhead

私はディルを使用します、それはすべてのデータを保存し、おそらくモジュール情報を考えますか?そうでないかもしれない。これらの非常に複雑なオブジェクトを格納するためにpickleを使用しようとしたことを覚えていますが、それは私にとってはうまくいきませんでした。 cPickleはおそらくdillと同じ仕事をしますが、cpickleを試したことがありません。文字通りまったく同じように機能するように見えます。私は「obj」拡張を使用していますが、それは決して従来のことではありません...オブジェクトを格納していたので、それは私にとっては理にかなっています。

import dill
wd = "/whatever/you/want/your/working/directory/to/be/"
rf= RandomForestRegressor(n_estimators=250, max_features=9,compute_importances=True)
rf.fit(Predx, Predy)
dill.dump(rf, open(wd + "filename.obj","wb"))

ところで、iPythonを使用しているかどうかはわかりませんが、時々そのようにファイルを書き込むと、次のことを行う必要があります。

with open(wd + "filename.obj","wb") as f:
    dill.dump(rf,f)

オブジェクトを再度呼び出します。

model = dill.load(open(wd + "filename.obj","rb"))
1
O.rka

モデルの保存には、.sav formateを使用することもできます。完全なモデルと情報を保存します。

0
Ch HaXam