簡體   English   中英

在 sklearn 中保存 MinMaxScaler 模型

[英]Save MinMaxScaler model in sklearn

我在MinMaxScaler中使用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()和訓練數據。 有沒有辦法保存定標器並稍后從不同的文件加載它?

甚至比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) 

注意:不推薦使用sklearn.externals.joblib 安裝並使用純joblib代替

所以我實際上不是這方面的專家,但從一些研究和一些有用的鏈接sklearn.externals.joblib ,我認為picklesklearn.externals.joblib將成為你的朋友。

pickle允許您將模型或“轉儲”模型保存到文件中。

我認為這個 鏈接也很有幫助。 它討論了創建持久性模型。 您想要嘗試的是:

# 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 外部組件的更多信息。

如果這沒有幫助,或者我不了解您的模型,請告訴我。

注意:不推薦使用sklearn.externals.joblib 安裝並使用純joblib代替

請注意, sklearn.externals.joblib已被棄用並被普通的舊joblib取代,后者可以通過pip install joblib

import joblib
joblib.dump(my_scaler, 'scaler.gz')
my_scaler = joblib.load('scaler.gz')

請注意,文件擴展名可以是任何內容,但如果它是['.z', '.gz', '.bz2', '.xz', '.lzma']則將使用相應的壓縮協議。 joblib.dump()joblib.load()方法的文檔。

您可以使用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)

執行此操作的最佳方法是創建一個如下所示的 ML 管道:

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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM