SklearnでMinMaxScaler
モデルを使用して、モデルの機能を正規化しています。
_training_set = np.random.Rand(4,4)*10
training_set
[[ 6.01144787, 0.59753007, 2.0014852 , 3.45433657],
[ 6.03041646, 5.15589559, 6.64992437, 2.63440202],
[ 2.27733136, 9.29927394, 0.03718093, 7.7679183 ],
[ 9.86934288, 7.59003904, 6.02363739, 2.78294206]]
scaler = MinMaxScaler()
scaler.fit(training_set)
scaler.transform(training_set)
[[ 0.49184811, 0. , 0.29704831, 0.15972182],
[ 0.4943466 , 0.52384506, 1. , 0. ],
[ 0. , 1. , 0. , 1. ],
[ 1. , 0.80357559, 0.9052909 , 0.02893534]]
_
次に、同じスケーラーを使用してテストセットを正規化します。
_ [[ 8.31263467, 7.99782295, 0.02031658, 9.43249727],
[ 1.03761228, 9.53173021, 5.99539478, 4.81456067],
[ 0.19715961, 5.97702519, 0.53347403, 5.58747666],
[ 9.67505429, 2.76225253, 7.39944931, 8.46746594]]
_
しかし、私は、scaler.fit()
を常にトレーニングデータで使用したくないのです。スケーラーを保存し、後で別のファイルからロードする方法はありますか?
だから私は実際にはこれに関する専門家ではないが、少しの研究といくつかの有用な links から、pickle
とsklearn.externals.joblib
はあなたの友達になります。
パッケージpickle
を使用すると、モデルを保存したり、モデルをファイルにダンプしたりできます。
これは link も役立つと思います。永続性モデルの作成について説明します。試してみたいことは次のとおりです。
# could use: import pickle... however let's do something else
from sklearn.externals import joblib
# this is more efficient than pickle for things like large numpy arrays
# ... which sklearn models often have.
# then just 'dump' your file
joblib.dump(clf, 'my_Dope_model.pkl')
ここ は、sklearnの外観についての詳細を学ぶことができる場所です。
それが役に立たない場合、またはあなたのモデルについて何か理解していない場合はお知らせください。
pickle
(この方法よりもはるかに大きなファイルを作成します)よりも優れているのは、sklearn
の組み込みツールを使用できることです。
from sklearn.externals import joblib
scaler_filename = "scaler.save"
joblib.dump(scaler, scaler_filename)
# And now to load...
scaler = joblib.load(scaler_filename)
pickle
を使用して、スケーラーを保存できます。
import pickle
scalerfile = 'scaler.sav'
pickle.dump(scaler, open(scalerfile, 'wb'))
読み込み直します:
import pickle
scalerfile = 'scaler.sav'
scaler = pickle.load(open(scalerfile, 'rb'))
test_scaled_set = scaler.transform(test_set)
_sklearn.externals.joblib
_は非推奨になり、単純な古い joblib
に置き換えられていることに注意してください。これは_pip install joblib
_でインストールできます。
_import joblib
joblib.dump(my_scaler, 'scaler.pkl')
my_scaler = joblib.load('scaler.pkl')
_
joblib.dump()
および joblib.load()
メソッドのドキュメント。
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import MinMaxScaler
from sklearn.externals import joblib
pipeline = make_pipeline(MinMaxScaler(),YOUR_ML_MODEL() )
model = pipeline.fit(X_train, y_train)
joblib.dump(model, 'filename.mod')
model = joblib.load('filename.mod')