如何在scikit-learn的高斯过程回归中重新标定归一化标准差?



我使用scikit-learn进行高斯过程回归建模。我的数据没有标准化。模型总是返回0到1之间的标准差值,这与我的数据不符。有人知道我如何重新调整标准差值来获得实际的标准差吗?

我使用的一种方法是在scikit-learn中使用标准标量。在训练模型之前对数据集进行规范化是很自然的。

流程如下:

  • 用你的训练数据拟合标量(表示标量为SC)
  • 用SC转换你的数据集(训练和测试集)
  • 用归一化训练集
  • 训练GPR模型
  • 用GPR模型预测你的归一化测试集并得到输出
  • 用SC
  • 对您的均值和标准输出进行反变换

std_scaler

希望对大家有所帮助:)

好吧,赵斗铉的程序并不完全有效。考虑对于高斯过程,一些新的数据点X'的预测分布是正态分布的。假设我们有训练数据中目标Y的均值u和标准差s,我们在训练前使用它们进行标准化。然后我们可以用

对均值和方差进行逆变换
  1. E[Y'*s + u] = E[Y']*s + u

  2. Var[Y'*s + u] = Var[Y'*s] = s^2*Y

所以新的预测分布是Normal(E[Y']*s + u, s^2*Y')

如果你需要一个具体的实现,你可以查看GPy的规范化器。

最新更新