1

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

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

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

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

4

2 回答 2

1

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

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

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

于 2019-09-08T06:40:50.907 回答
0

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

于 2019-09-08T06:32:12.493 回答