生产数据标准化

数据挖掘 数据科学模型 正常化
2022-03-15 00:45:43

在训练模型时,我们将数据集拆分为训练集和测试集。如果需要对任何列进行标准化/标准化,则此过程将分别针对训练集和测试集进行,以防止数据泄漏。测试集的归一化是在训练集的参数上完成的。我们通常编写的代码如下所示 -

scaler = StandardScaler() #scaler = MinMaxScaler()
train = scaler.fit_transform(train)
test = scaler.transform(test)

fit部分计算出参数,然后transform部分进行归一化。

现在我的问题是 - 当模型部署在生产中时,来自现实生活数据的列也需要规范化。我们如何做到这一点?我们是将其存储在scaler某处(可能是泡菜)还是将参数scaler(如最小值、最大值、平均值、标准偏差等)存储在某处(例如文件、表),然后读取存储的文件或表以检索参数值并在调用predict函数之前对新的现实生活数据进行规范化。

1个回答

这取决于每列的最大值:如果现实生活中的数据有新的最大值,则以前的缩放器可能是错误的,您可能需要重新缩放它。因此,您可以测试缩放器是否正确。

要保存缩放器,您可以使用 pickle 中的转储函数:

from pickle import dump
dump(scaler, open('scaler.pkl', 'wb'))

然后你可以加载它:

from pickle import load
scaler = load(open('scaler.pkl', 'rb'))

要对其进行测试,您可以检查此处描述的最小值和最大值: https ://machinelearningmastery.com/how-to-save-and-load-models-and-data-preparation-in-scikit-learn-for-later -采用/