You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

sklearn高斯过程回归拟合自定义数据时X,y赋值问题求解

问题原因

你看到的X, y = ???(n_samples=500, noise=0, random_state=0)是sklearn官方示例里自带的模拟数据生成代码,作用是生成演示用的假数据,和你自有数据的拟合场景无关。你已经通过拉丁超立方采样生成了输入特征、通过目标函数计算了对应标签,直接用自己生成的数据集即可,不需要保留这行模拟数据生成逻辑。

可直接运行的修正代码
import numpy as np
from scipy.stats import qmc
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import DotProduct, WhiteKernel

# 定义目标函数
def objectives (h,b,l,t):
    f1 = 1.10471*(h**2)*l + 0.04811*t*b*(14.0 + l)
    f2 = 2.1952 / (t**3)*b
    return f1,f2

# 采样生成输入特征矩阵X,需要500个样本就把sample_num改成500
sample_num = 100
sampler = qmc.LatinHypercube(d=4, seed=0)
u_bounds = np.array([5.0, 5.0, 10.0, 10.0])
l_bounds = np.array([0.125, 0.125, 0.1, 0.1])
X = sampler.random(n=sample_num) * (u_bounds - l_bounds) + l_bounds
# 如果你用的是旧版scipy接口,把上面一行替换成你原来的写法即可:
# X = sampler.lhs_method(sample_num)*(u_bounds-(l_bounds)) + (l_bounds)

# 计算对应标签y
y = np.zeros((sample_num, 2))   
for i in range(X.shape[0]):
    y[i,0], y[i,1] = objectives(X[i,0], X[i,1], X[i,2], X[i,3])

# 模型训练
kernel = DotProduct() + WhiteKernel()
gpr = GaussianProcessRegressor(kernel=kernel, random_state=0).fit(X, y)
# 输出训练集R²得分
print(gpr.score(X, y))
补充说明
  • 高斯过程回归对核函数选择敏感,你当前选的DotProduct核更适合线性趋势的数据,如果你的目标函数是非线性平滑的,建议替换成Matern核或者RBF核,拟合效果会明显提升。
  • 目前sklearn的原生多输出GPR是对每个输出单独建模,如果需要捕捉两个目标函数之间的相关性,需要用MultiOutputRegressor包装或者使用支持多输出相关性的核结构。

内容的提问来源于stack exchange,提问作者Espejito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 00:04:23