返回

python-为什么GaussianProcessRegressor通过机器产生不同的结果?

发布时间:2022-06-09 01:45:19 237
# node.js

我的gpr功能通过机器产生不同的结果,我想知道为什么。

具有sklearn.gaussian_process.GaussianProcessRegressor我制作了自己的gpr功能。

from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF, ConstantKernel


def my_gpr(x, y, sample, rbf, constant):
    kernel = ConstantKernel(rbf) * RBF(constant)
    gp = GaussianProcessRegressor(kernel=kernel, normalize_y=True, optimizer=None)

    gp.fit(x, y)
    return gp.predict(sample, return_std=False)

然后,我为实验制作了固定的x、y和样本值。

虽然我随机生成了x,y,但我确信在这两台机器上使用的值是相同的。(在一台计算机上生成值,并将其自身复制到另一台计算机)

import numpy as np

x = np.round(np.random.uniform(low=-100, high=100, size=(37,2)), 6)
y = np.round(np.random.uniform(low=-100, high=100, size=(37,2)), 6)
sample = np.round(np.random.uniform(low=-100, high=100, size=(926,2)), 6)

这是执行代码。

ret = my_gpr(x, y, sample, 30, 1)
print(list(map(lambda x: print('{:.50f}, {:.50f}'.format(x[0], x[1])), ret)))

我在两台具有相同版本的scikit-learn,一个是Windows,一个是Linux。

他们的结果非常相似,但与小数点后10位有一些差异。

在一台机器上,每次运行都会得到相同的结果。

为什么会有这些差异?

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像