Python 3.x 保存StandardScaler()模型以用于新数据集

Python 3.x 保存StandardScaler()模型以用于新数据集,python-3.x,scikit-learn,Python 3.x,Scikit Learn,如何在Sklearn中保存StandardScaler()模型?我需要让一个模型运行起来,不想一次又一次地加载训练数据,让StandardScaler学习,然后应用到我想要预测的新数据上 from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split #standardizing after splitting X_train, X_test, y_tra

如何在Sklearn中保存StandardScaler()模型?我需要让一个模型运行起来,不想一次又一次地加载训练数据,让StandardScaler学习,然后应用到我想要预测的新数据上

from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

#standardizing after splitting
X_train, X_test, y_train, y_test = train_test_split(data, target)
sc = StandardScaler()
X_train_std = sc.fit_transform(X_train)
X_test_std = sc.transform(X_test)

您可以使用joblibdump函数保存标准定标器模型。这里有一个完整的例子供参考

from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris

data, target = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(data, target)

sc = StandardScaler()
X_train_std = sc.fit_transform(X_train)
如果要保存scstandardscaller,请使用以下命令

from sklearn.externals.joblib import dump, load
dump(sc, 'std_scaler.bin', compress=True)
这将创建文件std_scaler.bin并保存sklearn模型

要在以后阅读模型,请使用加载

sc=load('std_scaler.bin')

注意:
sklearn.externals.joblib
不推荐使用。安装并使用纯
joblib
代替,或者如果您喜欢pickle:

import pickle
pickle.dump(sc, open('file/path/scaler.pkl','wb'))

sc = pickle.load(open('file/path/scaler.pkl','rb'))

这应该是公认的答案。尽管如此,我还是更愿意将
与open()…
一起使用,而不是依赖gc来关闭文件。