首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >探地雷达中的normalize_y

探地雷达中的normalize_y
EN

Stack Overflow用户
提问于 2021-09-07 03:00:30
回答 1查看 259关注 0票数 1

我试图用GaussianProcessRegressor来预测未知的值。

目标值通常在1000-10000之间。

由于它们不是0平均优先,所以我使用normalize_y = False设置模型,这是一个默认设置。

代码语言:javascript
复制
from sklearn.gaussian_process import GaussianProcessRegressor

gpr = GaussianProcessRegressor(kernel = RBF, random_state=0, alpha=1e-10, normalize_y = False)

当我用探地雷达模型预测未知时,返回的std值不现实地太小,例如在0.1的范围内,这是预测值的0.001%。

当我将设置更改为normalize_y = True时,返回的std值更真实,大约为500。

有人能确切地解释一下normalize_y在这里做什么吗?如果我把它设置为真还是假的话?

EN

回答 1

Stack Overflow用户

发布于 2022-06-06 13:19:15

我在这里找到了最接近的答案:https://github.com/scikit-learn/scikit-learn/issues/15612

“好吧,我想我知道这里可能发生了什么。这有点棘手,但我认为没有一个内核有垂直长度尺度参数,所以内核(x,x)总是等于1。例如,K的所有对角线元素都等于1(在我们把脊线加进去之前)。

然后我们可以看到,预测的方差只能在0到1之间。例如,如果我们在远离训练数据的某个点预测(所以内核(X,x_new)是一个零向量),那么方差只是

sigma^2 =核(x_new,x_new) =1

我认为这里真正的问题是,先验是用于具有单位方差的数据,但是数据没有单位方差。解决办法是将数据规范化,使其在“进入”GP后具有单位方差,进行GP分析,然后在结束时再次“不规范”。代码已经自动删除平均值,所以我认为我们只需要在同一点除以标准差,它就可以工作了。

所以只需要多几句台词就行了!“

因此,更改内核的length_scale_bounds参数应该可以解决这个问题!

我希望这能帮助那些在我面临同样问题时来到这里的人!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69081951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档