【问题标题】:Normalizing test set but higher range标准化测试集但范围更高
【发布时间】:2020-01-10 08:56:07
【问题描述】:

我正在规范化和重新调整我的训练集:

# zero mean
feat = (feat - feat.mean()) / feat.std()

# scale between -1, 1
feat = ((feat - feat.min()) / (feat.max() - feat.min())) * 2 - 1

这很好用。我以完全相同的方式转换测试集,使用训练集中的平均值、标准差、最小值、最大值。如果测试集中的平均值和最大值与训练集相同,则此方法可以正常工作。但是,如果测试集中未转换特征的范围不同,那么我将在重新缩放后得到超出 -1、1 的值。如何解决这个问题?

【问题讨论】:

    标签: machine-learning data-science cross-validation feature-engineering feature-scaling


    【解决方案1】:

    如果您的大部分测试输入的值高于或低于您用于训练模型的极端值,那么您最好重新训练您的模型,因为您的训练和测试分布不同。

    对于像测试实例这样的异常(离群值),您可以将值裁剪为介于训练最大值/最小值之间以进行 minmax 缩放。

    在标准化的情况下,您的测试可以是任何值,对于极端情况,您只会获得较大的 z 分数。

    【讨论】:

      【解决方案2】:

      我认为唯一的方法是使用所有数据的最小值和最大值(训练集和测试集)来规范化您的数据。

      【讨论】:

      • 部署模型的时候呢?您没有将在训练期间进行推理的数据。你如何处理比你在训练中看到的更高的输入?
      猜你喜欢
      • 2021-12-09
      • 2020-12-20
      • 2020-08-26
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 2018-09-24
      • 2018-05-19
      • 1970-01-01
      相关资源
      最近更新 更多