保存 StandardScaler() 模型以用于新数据集
Posted
技术标签:
【中文标题】保存 StandardScaler() 模型以用于新数据集【英文标题】:Saving StandardScaler() model for use on new datasets 【发布时间】:2019-04-08 17:00:06 【问题描述】:如何在 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)
【问题讨论】:
【参考方案1】:您可以使用 joblib dump 函数来保存标准缩放器模型。这是一个完整的示例供参考。
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)
如果您想保存 sc 标准调用程序,请使用以下
from sklearn.externals.joblib import dump, load
dump(sc, 'std_scaler.bin', compress=True)
这将创建文件 std_scaler.bin 并保存 sklearn 模型。
要稍后读取模型,请使用 load
sc=load('std_scaler.bin')
注意:sklearn.externals.joblib
已弃用。安装并使用纯 joblib
代替
【讨论】:
【参考方案2】:或者如果你喜欢腌制:
import pickle
pickle.dump(sc, open('file/path/scaler.pkl','wb'))
sc = pickle.load(open('file/path/scaler.pkl','rb'))
【讨论】:
这应该是公认的答案。虽然,我更喜欢使用with open()..
而不是依靠 gc 来关闭文件。以上是关于保存 StandardScaler() 模型以用于新数据集的主要内容,如果未能解决你的问题,请参考以下文章
当机器学习模型标准化时如何预测新值 StandardScaler
[sklearn][standardscaler] 我可以反转模型输出的标准缩放器吗?