2016-12-14 3 views
4

this guideの後に、後で使用するために機械学習モデルを保存しました。モデルは、一台のマシンでダンプされた:joblibを使用してモデルをロードする前にsklearnのバージョンを確認してください

from sklearn.externals import joblib 
joblib.dump(clf, 'model.pkl') 

そして、私は別のマシンでjoblib.load('model.pkl')それをロードしたとき、私はこの警告だ:

UserWarning: バージョン前の0.18から化したりunpickle化したり推定DecisionTreeClassifierしようとしますバージョン0.18.1を使用します。これにより、 の中断コードまたは無効な結果が生じる可能性があります。自己責任。

保存されたモデルのSklearnバージョンを知り、現在のバージョンと比較する方法はありますか?

答えて

3

酸味評価器のバージョンwas added in scikit-learn 0.18。 v0.18から始めて、あなたが得る警告が自動的にunpickle化と呼ばれる推定の__setstate__ methodによって生成される

estimator.__getstate__()['_sklearn_version'] 

、scikit学習と推定器を作成するために使用されるのバージョンを取得することができます。見積もりをディスクからロードせずにこのバージョンを取得する簡単な方法はないようです。あなたは

前の0.18バージョンの
import warnings 

with warnings.catch_warnings(): 
     warnings.simplefilter("ignore", category=UserWarning) 
     estimator = joblib.load('model.pkl') 

は、そのようなメカニズムが存在しない、と、警告をフィルタリングすることができますが、私は、少なくとも、pre-0.18、あなたは、例えば、に検出するためのテストとしてnot hasattr(estimator, '__getstate')を使用することができます想像しますバージョン。

+0

返信いただきありがとうございます。どのようにして警告を除外することができますか?実際に、見積もりを読み込む前にバージョンを取得する理由は、この警告を取り除くことです。 – Canh

0

私は同じ問題を抱えています。データセットを再学習し、joblib.dumpで 'model.pkl'ファイルを再度保存するだけです。これは解決されます。がんばろう!

関連する問題