高斯过程拟合函数方差的代码
时间: 2023-08-29 09:10:56 浏览: 83
gauss-fitting-and-PCA.zip_PCA拟合_拟合高斯函数_高斯函数拟合_高斯拟合
5星 · 资源好评率100%
高斯过程是一种强大的机器学习算法,它可以用来拟合任何函数,并给出模型预测的不确定性。在高斯过程中,函数的不确定性可以通过函数方差来量化。下面是使用Python中的Scikit-learn库实现高斯过程拟合函数方差的代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF, ConstantKernel
# 定义函数f(x)
def f(x):
return np.sin(x)
# 生成训练数据
X_train = np.array([-1, 0, 1]).reshape(-1, 1)
y_train = f(X_train)
# 定义高斯过程核函数
kernel = ConstantKernel(1.0, (1e-3, 1e3)) * RBF(length_scale=1.0, length_scale_bounds=(1e-3, 1e3))
# 创建高斯过程模型并拟合训练数据
gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=9)
gp.fit(X_train, y_train)
# 生成测试数据
X_test = np.linspace(-5, 5, 100).reshape(-1, 1)
# 预测测试数据的均值和方差
y_mean, y_std = gp.predict(X_test, return_std=True)
# 绘制预测结果及其方差
plt.plot(X_test, f(X_test), 'r:', label=r'$f(x) = \sin(x)$')
plt.plot(X_train, y_train, 'r.', markersize=10, label='Observations')
plt.plot(X_test, y_mean, 'b-', label='Prediction')
plt.fill_between(X_test[:, 0], y_mean - y_std, y_mean + y_std, alpha=0.2, color='blue')
plt.xlabel('$x$')
plt.ylabel('$f(x)$')
plt.ylim(-3, 3)
plt.legend(loc='upper left')
plt.show()
```
上述代码中,我们首先通过定义函数 `f(x)` 生成训练数据。然后,我们使用Scikit-learn库中的 `GaussianProcessRegressor` 类来创建高斯过程模型,并使用训练数据来拟合模型。在定义高斯过程核函数时,我们使用了常数核和RBF核的组合。最后,我们使用 `predict` 方法来预测测试数据的均值和方差,并使用 `fill_between` 函数来绘制预测结果的方差。
阅读全文