我使用scikit-learn进行高斯过程回归建模。我的数据没有标准化。模型总是返回0到1之间的标准差值,这与我的数据不符。有人知道我如何重新调整标准差值来获得实际的标准差吗?
我使用的一种方法是在scikit-learn中使用标准标量。在训练模型之前对数据集进行规范化是很自然的。
流程如下:
- 用你的训练数据拟合标量(表示标量为SC)
- 用SC转换你的数据集(训练和测试集)
- 用归一化训练集 训练GPR模型
- 用GPR模型预测你的归一化测试集并得到输出
- 用SC 对您的均值和标准输出进行反变换
std_scaler
希望对大家有所帮助:)
好吧,赵斗铉的程序并不完全有效。考虑对于高斯过程,一些新的数据点X'
的预测分布是正态分布的。假设我们有训练数据中目标Y
的均值u
和标准差s
,我们在训练前使用它们进行标准化。然后我们可以用
E[Y'*s + u] = E[Y']*s + u
Var[Y'*s + u] = Var[Y'*s] = s^2*Y
所以新的预测分布是Normal(E[Y']*s + u, s^2*Y')
。
如果你需要一个具体的实现,你可以查看GPy的规范化器。