Python 虽然在scikitlearn(GPR)中应用不同的测试数据,但预测不会改变

Python 虽然在scikitlearn(GPR)中应用不同的测试数据,但预测不会改变,python,python-3.x,scikit-learn,Python,Python 3.x,Scikit Learn,使用以下数据(X=测试数据,y=目标数据,X=测试数据)我想在Scikit学习回归中执行探地雷达预测: X= np.array([[43.3301, -196.211, 1157.89, 2.71431, -191.664, 1159.45, -28.9847, -191.544, 1158.88, 5.99311, -218.226, 1229.12], [43.3212, -196.12, 1157.79, 2.7885, -191.587, 1159.45, -29.0067, -1

使用以下数据
(X=测试数据,y=目标数据,X=测试数据)
我想在Scikit学习回归中执行探地雷达预测:

X= np.array([[43.3301, -196.211, 1157.89, 2.71431, -191.664, 1159.45, 
-28.9847,  -191.544, 1158.88, 5.99311, -218.226, 1229.12],

[43.3212, -196.12, 1157.79, 2.7885, -191.587, 1159.45,
-29.0067, -191.53, 1158.88, 5.94141, -218.028, 1229.11],

[43.2683, -195.597, 1157.93, 2.73207, -191.123, 1159.45,
-29.0409, -191.025, 1158.98, 5.90694, -217.163, 1229.18],

[43.2876, -194.996, 1158.02, 2.73876, -190.575, 1159.49,
-29.1242, -190.445, 1159.04, 5.70859, -216.194, 1229.23],

[43.3158, -194.447, 1158.05, 2.72303, -190.022, 1159.47,
-29.1352, -189.92, 1159.07, 5.70269, -215.175, 1229.24 ]]) <class 'numpy.ndarray'> (5, 12)

y= np.array([[ 9.14779,  -186.67,     1294.53 ],
             [ 9.12453,  -186.559,    1294.33 ],
             [ 8.50554,  -186.254,    1293.22 ],
             [ 7.94586,  -185.972,    1291.67 ],
             [ 7.32336,  -185.646,    1290.63 ]]) <class 'numpy.ndarray'> (5, 3)

x= np.array ([[90.23126221, 245.30821228,  675.83514404,
               63.30067444, 256.12649536,  752.84460449,
               28.84734154, -236.44929504,  642.7713623 ,
               7.27009201, -244.59780884,  708.88665771]]) <class 'numpy.ndarray'> (1, 3)

kernel = ConstantKernel(1.0, (1e-3, 1e3)) * RBF(10.0, (1e-2, 1e2)) + WhiteKernel(0.1, (1e-10, 0.5))

gpr = GaussianProcessRegressor(kernel= kernel, n_restarts_optimizer=0, normalize_y= True)
gpr.fit(X, y)

y_Pred, sigma = gpr.predict(x, return_std= True)
print('\ny_Pred: ', y_Pred, type(y_Pred), y_Pred.shape)

rms = sqrt(mean_squared_error(y[0], y_Pred.T))
print('\nrms: ', rms)

问题可能来自于训练数据集
X
:它的方差非常低,所有事务都非常相似,与您试图预测的
X
相差很远……

也许问题在于常量内核。试试另一个内核。@Thomas Lang我已经试过了。请看我在文章中的编辑。嗯,这表明你的模型完全不合适。对照文档检查
y
的维度,也许您需要重塑数据。根据doc
y:array like,shape=(n_samples,[n_output_dims])
在我的例子中,
n_output_dims
3
。我应该在哪个维度上重塑它?另一个尝试:对模型参数执行网格搜索并收集所有结果。如果结果在所有可能的参数上都是一样的,我们就陷入了困境。否则,这有助于优化参数。
kernel1 = ConstantKernel(1.0, (1e-3, 1e3)) * RBF(10.0, (1e-2, 1e2)) + WhiteKernel(0.1, (1e-10, 0.5))
kernel2 = 1.0 * RBF(length_scale= 1.0, length_scale_bounds= (1e-1, 10.0))
kernel3 = 1.0 * RBF(length_scale= 100.0, length_scale_bounds= (1e-2, 1e3)) + WhiteKernel(noise_level= 1, noise_level_bounds= (1e-10, 1e+1))
kernel4 = 1.0 * RationalQuadratic(length_scale= 1.0, alpha= 0.1)
kernel5 = 1.0 * ConstantKernel(constant_value= 1.0, constant_value_bounds= (1e-3, 1e3)) * RBF(length_scale= 10, length_scale_bounds= (1e-2, 1e2))
kernel6 = 1.0 * ExpSineSquared(length_scale= 1.0, periodicity=3.0, periodicity_bounds= (1e-2, 1e1)) + WhiteKernel(noise_level= 1, noise_level_bounds= (1e-10, 1e+1))
kernel7 = Matern(length_scale= 1.0, length_scale_bounds= (1e-1, 10.0), nu= 1.5)