且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在 sklearn 中保存 MinMaxScaler 模型

更新时间:2023-12-01 22:41:22

所以我实际上不是这方面的专家,而是通过一些研究和一些有用的links,我认为 picklesklearn.externals.joblib 正在在这里成为你的朋友.

pickle 允许您将模型或转储"模型保存到文件中.

我认为这个链接也很有帮助.它讨论了创建持久性模型.您想要尝试的是:

# 可以使用:import pickle...但是让我们做点别的从 sklearn.externals 导入 joblib# 对于像大型 numpy 数组这样的事情,这比 pickle 更有效# ... sklearn 模型通常有哪些.# 然后只是转储"你的文件joblib.dump(clf, 'my_dope_model.pkl')

在这里您可以了解有关 sklearn 外部的更多信息.>

如果这没有帮助,或者我对您的模型不了解,请告诉我.

注意:sklearn.externals.joblib 已弃用.安装并使用纯 joblib 代替

I'm using the MinMaxScaler model in sklearn to normalize the features of a model.

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]]

Now I want to use the same scaler to normalize the test set:

   [[ 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]]

But I don't want so use the scaler.fit() with the training data all the time. Is there a way to save the scaler and load it later from a different file?

So I'm actually not an expert with this but from a bit of research and a few helpful links, I think pickle and sklearn.externals.joblib are going to be your friends here.

The package pickle lets you save models or "dump" models to a file.

I think this link is also helpful. It talks about creating a persistence model. Something that you're going to want to try is:

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

Here is where you can learn more about the sklearn externals.

Let me know if that doesn't help or I'm not understanding something about your model.

Note: sklearn.externals.joblib is deprecated. Install and use the pure joblib instead