我不确定我是否正确地去规范化数据。我有一个输出变量和多个输入变量。我使用RSNNS包对它们进行规范化。假设x
是一个输入矩阵(N
x M
),其中每个N
行都是一个具有M
特征的对象。而y
是一个向量(N
),其对应的答案。
nx <- normalizeData(x, type='0_1')
接下来,一些数据用于建立模型,另一些数据用于预测。假设pred.ny
是预测值。这些值已经被标准化。
pred.y <- denormalizeData(pred.ny, getNormParameters(nx))
这是否正确?它如何工作?对于一个输入,通过使用先前用于归一化的最小值和最大值是清晰的。但是,如果每个输入都使用自己的最小值和最大值进行单独的归一化,它如何工作呢?
更新 这里有一个玩具示例,其中“0_1”看起来比“norm”更好。“norm”会产生巨大的训练误差,并且几乎是恒定的预测。
x <- runif(1020, 1, 5000)
y <- sqrt(x)
nx <- normalizeData(x, type='0_1')
ny <- normalizeData(y, type='0_1')
model <- mlp(nx[1:1000], ny[1:1000], size = 1)
plotIterativeError(model)
npy <- predict(model, matrix(nx[1001:1020], ncol=1))
py <- denormalizeData(npy, getNormParameters(ny))
print(cbind(y[1001:1020], py))
y
,而没有在训练的上下文中提到。我期望前r
行的x
和前r
行的y
会被用于训练,而剩余的N-r
则用于预测。 - TooTonepred.y <- denormalizeData(pred.ny, getNormParameters(ny))
- luckyi