使用sklearn.gaussian_process实现Python中的高斯过程回归预测
发布时间:2024-01-03 08:25:56
高斯过程回归(Gaussian Process Regression)是一种非参数的回归方法,通过基于训练数据集的概率分布预测新的未知数据。
在Python中,可以使用sklearn库的gaussian_process模块来实现高斯过程回归。下面是一个使用sklearn.gaussian_process进行预测的简单示例。
首先,我们需要导入相应的库和模块:
import numpy as np import matplotlib.pyplot as plt from sklearn.gaussian_process import GaussianProcessRegressor from sklearn.gaussian_process.kernels import RBF, ConstantKernel
接下来,我们定义一个自定义函数来作为回归的目标函数:
def fun(x):
return np.sin(3*x)
然后,我们生成带有噪声的训练数据集,并在图上绘制出来:
np.random.seed(42) # 生成训练数据 X_train = np.random.uniform(-5, 5, 20) y_train = fun(X_train) + np.random.randn(len(X_train)) * 0.1 # 绘制训练数据 plt.scatter(X_train, y_train, c='red', label='Training Data') plt.legend() plt.show()
接下来,我们需要定义高斯过程回归的核函数和模型,然后拟合训练数据:
# 定义核函数 kernel = ConstantKernel(1.0) * RBF(length_scale=1.0) # 定义高斯过程回归模型 model = GaussianProcessRegressor(kernel=kernel, alpha=0.01) # 拟合训练数据 model.fit(X_train.reshape(-1, 1), y_train)
然后,我们生成测试数据,并使用高斯过程回归模型进行预测:
# 生成测试数据 X_test = np.linspace(-5, 5, 100) # 进行预测 y_pred, std = model.predict(X_test.reshape(-1, 1), return_std=True)
最后,我们将预测结果与真实函数进行对比,并绘制在图上:
# 绘制预测结果 plt.scatter(X_train, y_train, c='red', label='Training Data') plt.plot(X_test, fun(X_test), '--', label='True Function') plt.plot(X_test, y_pred, label='Predicted Function') plt.fill_between(X_test, y_pred - std, y_pred + std, alpha=0.3) plt.legend() plt.show()
在这个例子中,我们使用高斯过程回归模型拟合了带有噪声的正弦函数,并对新的未知数据进行了预测。预测结果通过绘制在图上以和真实函数进行对比,并且使用了置信区间来表示预测结果的不确定性。
通过sklearn.gaussian_process模块的高斯过程回归方法,我们可以很方便地进行高斯过程回归的预测,并了解预测结果的不确定性。这对于许多实际问题的预测和决策非常有用。
