use*_*495 1 python scikit-learn
我有一个与此主题非常相似的问题,但我想重复使用StandardScaler而不是LabelEncoder.这就是我所做的:
# in one program
dict = {"mean": scaler.mean_, "var": scaler.var_}
# and save the dict
# in another program
# load the dict first
new_scaler = StandardScaler()
new_scaler.mean_ = dict['mean'] # Hoever it doesn't work
new_scaler.var_ = dict['var'] # Doesn't work either...
Run Code Online (Sandbox Code Playgroud)
我也试过set_params,但它只能改变这些参数:copy,with_mean,和with_std.
那么,我怎样才能重新使用我在程序1中得到的缩放器?谢谢!
只是腌制 整个事情.
按照官方文档.
您可以使用第一个链接中的python标准pickle或第二个链接中提到的专用joblib-pickle(我建议使用;通常更有效,但对于这种简单的object = scaler并不重要):
from sklearn.externals import joblib
new_scaler = StandardScaler()
# ...fit it... do something ...
joblib.dump(new_scaler , 'my_scaler.pkl') # save to disk
loaded_scaler = joblib.load('my_scaler.pkl') # load from disk
Run Code Online (Sandbox Code Playgroud)
如果您有任何机会想要将您的sklearn对象存储在MySQL,MongoDB,Redis和co.等数据库中,那么使用基于文件的存储的上述示例当然不会起作用.
那么简单的方法是:使用python-pickle的转储,它将转储到一个bytes-object(为大多数DB-wrappers准备好).
对于更有效的joblib,你必须使用python的BytesIO以类似的方式使用它(因为方法本身是基于文件的,但可以用在类文件对象上).