在使用sklearn训练机器学习模型时,我通常会使用内置的StandardScaler...首先将缩放器拟合到训练数据上,然后转换训练数据...最后使用相同的StandardScaler对象通过先前从训练数据集中拟合的参数来转换测试数据。
然而,我最近意识到,我认为任何试图在不同环境中对ML模型进行pickle和重新部署的尝试也将需要pickle StandardScaler...否则,新的输入数据在进入模型之前就无法被转换。这是我的错误,还是我简单地忽略了什么?每次我尝试在其他地方部署它们时,我是否都必须pickle ML模型和StandardScaler?只是奇怪的是,在Sci-kit learn Model Persistence文档中从未提到过这一点。
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)
然而,我最近意识到,我认为任何试图在不同环境中对ML模型进行pickle和重新部署的尝试也将需要pickle StandardScaler...否则,新的输入数据在进入模型之前就无法被转换。这是我的错误,还是我简单地忽略了什么?每次我尝试在其他地方部署它们时,我是否都必须pickle ML模型和StandardScaler?只是奇怪的是,在Sci-kit learn Model Persistence文档中从未提到过这一点。
joblib.dump(model, 'pickledModel.joblib')
joblib.dump(sc, 'pickledScaler.joblib')