svm 分類子のトレーニングに使用するデータセットの中心化を提供するスケーリングsklearn.preprocessing.scale
モジュールを適用したいと考えています。scikit-learn
次に、標準化パラメータを保存して、分類したいデータにも適用できるようにするにはどうすればよいですか?
を使用できることはわかってstandarScaler
いますが、分類器を実行するたびにデータに合わせる必要がないように、何らかの方法でファイルにシリアル化できますか?
svm 分類子のトレーニングに使用するデータセットの中心化を提供するスケーリングsklearn.preprocessing.scale
モジュールを適用したいと考えています。scikit-learn
次に、標準化パラメータを保存して、分類したいデータにも適用できるようにするにはどうすればよいですか?
を使用できることはわかってstandarScaler
いますが、分類器を実行するたびにデータに合わせる必要がないように、何らかの方法でファイルにシリアル化できますか?
fit
これは最も一般的なオプションであるため、最善の方法は post をピクルすることだと思います。おそらく、後で特徴抽出器とスケーラーの両方で構成されるパイプラインを作成することになるでしょう。(おそらく複合) ステージをピクルすることで、物事をより一般的にしています。モデルの永続性に関する sklearn のドキュメントでは、これを行う方法について説明しています。
そうは言ってもsklearn.preprocessing.StandardScaler
、適合パラメーターを照会できます。
scale_ : ndarray, shape (n_features,) フィーチャごとのデータの相対スケーリング。バージョン 0.17 の新機能: 非推奨の std_ の代わりに scale_ が推奨されます。 mean_ : 形状を持つ float の配列 [n_features] トレーニング セット内の各特徴の平均値。
次の短いスニペットはこれを示しています。
from sklearn import preprocessing
import numpy as np
s = preprocessing.StandardScaler()
s.fit(np.array([[1., 2, 3, 4]]).T)
>>> s.mean_, s.scale_
(array([ 2.5]), array([ 1.11803399]))
joblib モジュールを使用して、スケーラーのパラメーターを保存できます。
from joblib import dump
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaler.fit(data)
dump(scaler, 'scaler_filename.joblib')
後でスケーラーをロードできます。
from joblib import load
scaler = load('scaler_filename.joblib')
transformed_data = scaler.transform(new_data)