Python 使用Scikit';s StandardScaler在多个程序中正确运行

Python 使用Scikit';s StandardScaler在多个程序中正确运行,python,scikit-learn,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

我有一个与非常类似的问题,但我想重用
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...
我还尝试了
设置参数
,但它只能更改这些参数:
复制
使用
使用

那么,如何重新使用程序一中的定标器呢?谢谢

就是这整件事

跟随官员

您可以从第一个链接使用python的标准pickle,也可以使用第二个链接中提到的专门的joblib pickle(我建议这样做;通常效率更高,但对于这种简单的object=scaler并不重要):

如果您希望将sklearn对象存储在MySQL、MongoDB、Redis和co等数据库中,那么上面使用基于文件的存储的示例当然不起作用

简单的方法是:使用pythonpickle,它将转储到bytes对象(为大多数DB包装器做好准备)

为了获得更高效的joblib,您必须使用python以类似的方式使用它(因为该方法本身是基于文件的,但可以用于类似文件的对象)。

就是这样

跟随官员

您可以从第一个链接使用python的标准pickle,也可以使用第二个链接中提到的专门的joblib pickle(我建议这样做;通常效率更高,但对于这种简单的object=scaler并不重要):

如果您希望将sklearn对象存储在MySQL、MongoDB、Redis和co等数据库中,那么上面使用基于文件的存储的示例当然不起作用

简单的方法是:使用pythonpickle,它将转储到bytes对象(为大多数DB包装器做好准备)

对于更高效的joblib,您必须使用python以类似的方式使用它(因为该方法本身是基于文件的,但可以用于类似文件的对象)

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