【问题标题】:Saving StandardScaler() model for use on new datasets保存 StandardScaler() 模型以用于新数据集
【发布时间】: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)

【问题讨论】:

    标签: python-3.x scikit-learn


    【解决方案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 来关闭文件。
      猜你喜欢
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      • 2018-02-09
      • 2019-11-17
      相关资源
      最近更新 更多