如何规范化和缩放单个数据点

数据挖掘 机器学习 正常化 特征缩放
2022-02-27 12:07:09

我确实理解规范化和缩放训练/测试数据的概念;它确实有助于成本函数的收敛。它是许多机器学习算法的好帮手。

  • 我使用标准化数据 (MinMaxScaler) 训练和验证我的模型并保存我的模型。
  • 一个新的输入数据进来了,我想用我保存的模型进行预测。
  • 此时我不再有权访问训练/测试数据。我所拥有的只是新的单行输入数据。
  • 我将如何标准化这个输入数据的单个向量,以便可以将其提供给我的模型?

我能想到的唯一标准化只是数据的线性变换(例如,只需将值从 [40, 70] 范围映射到 [-1, 1])。我需要一种不依赖于全部数据的标准化技术。

谢谢!

1个回答

您需要以与对训练数据进行归一化相同的方式对输入进行归一化 - 但是,在预测新数据期间您不需要访问此训练数据。如果您使用了MinMaxScaler例如,那么您可以重新使用它来转换您的新数据点:

scaler = MinMaxScaler()
X_normalised = scaler.fit_transform(X)

# do other stuff here like train & validate your model

# now we have a new test data point from somewhere, we scale
# it using the scaler we fitted on the training data
new_test_point_normalised = scaler.transform(new_test_point)

# now we can classify it with our model!

您可以将缩放器序列化到磁盘,pickle并在必要时在预测新数据点时重新加载它(即模型训练和测试发生在两个不同的脚本中)。