如何正确使用scikit-learn的高斯过程进行2D输入,1D输出回归?

如何正确使用scikit-learn的高斯过程进行2D输入,1D输出回归?,第1张

如何正确使用scikit-learn的高斯过程进行2D输入,1D输出回归?

您正在使用两个功能来预测第三个。

plot_surface
如果您使用的是能够显示有关三维尺寸的信息(例如
hist2d
或)的2D图,则通常比使用3D图更清晰
pcolormesh
。这是一个使用与问题类似的数据/代码的完整示例

from itertools import productimport numpy as npfrom matplotlib import pyplot as pltfrom mpl_toolkits.mplot3d import Axes3Dfrom sklearn.gaussian_process import GaussianProcessRegressorfrom sklearn.gaussian_process.kernels import RBF, ConstantKernel as CX = np.array([[0,0],[2,0],[4,0],[6,0],[8,0],[10,0],[12,0],[14,0],[16,0],[0,2],         [2,2],[4,2],[6,2],[8,2],[10,2],[12,2],[14,2],[16,2]])y = np.array([-54,-60,-62,-64,-66,-68,-70,-72,-74,-60,-62,-64,-66,         -68,-70,-72,-74,-76])# Input spacex1 = np.linspace(X[:,0].min(), X[:,0].max()) #px2 = np.linspace(X[:,1].min(), X[:,1].max()) #qx = (np.array([x1, x2])).Tkernel = C(1.0, (1e-3, 1e3)) * RBF([5,5], (1e-2, 1e2))gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=15)gp.fit(X, y)x1x2 = np.array(list(product(x1, x2)))y_pred, MSE = gp.predict(x1x2, return_std=True)X0p, X1p = x1x2[:,0].reshape(50,50), x1x2[:,1].reshape(50,50)Zp = np.reshape(y_pred,(50,50))# alternative way to generate equivalent X0p, X1p, Zp# X0p, X1p = np.meshgrid(x1, x2)# Zp = [gp.predict([(X0p[i, j], X1p[i, j]) for i in range(X0p.shape[0])]) for j in range(X0p.shape[1])]# Zp = np.array(Zp).Tfig = plt.figure(figsize=(10,8))ax = fig.add_subplot(111)ax.pcolormesh(X0p, X1p, Zp)plt.show()

输出:

有点像金田,但我的示例数据也是如此。通常,您不应该期望通过这几个数据点而获得特别有趣的结果。

另外,如果您确实想要表面图,则可以将

pcolormesh
线替换为原来的线(或多或少):

ax = fig.add_subplot(111, projection='3d') surf = ax.plot_surface(X0p, X1p, Zp, rstride=1, cstride=1, cmap='jet', linewidth=0, antialiased=False)

输出:



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5649352.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存