Я обучил модель георадара склеарну над небольшим набором данных (пример ниже).Затем я создал сетку из точек тестовых данных, которая представляет собой более детализированную сетку обучающих данных, то есть имеет одинаковые (x, y, z) границы для каждого предиктора x, y и z, но с большим количеством точек данных, чем первоначально использовалосьчтобы соответствовать модели.
Но, когда я подгоняю модель, прогнозируется, что все невидимые точки данных будут mu = 0, sigma = 1, без исключения.Почему это?
Хотя, когда я пробую другое ядро, которое соответствует модели с гораздо более низким (фактически отрицательным) показателем R ^ 2, невидимые контрольные точки предсказываются с ненулевой средней и ненулевой сигмой.
Любая теоретическая или прикладная помощь по этому вопросу приветствуется и полезна.Спасибо!
Пример тренировочных данных
X data:
[[ 60 5000 2500]
[ 60 5000 5000]
[ 60 5000 7500]
[ 60 5000 10000]
[ 60 5000 20000]
[ 60 5000 30000]
[ 60 10000 2500]
[ 60 10000 5000]
[ 60 10000 7500]
[ 60 10000 10000]
[ 60 10000 20000]
[ 60 10000 30000]
[ 60 20000 2500]
[ 60 20000 5000]
[ 60 20000 7500]
[ 60 20000 10000]
...]
Y data:
[ 0.00527844 0.005325 0.02786722 0.0146621 0.01907119 0.03716826
0.00734524 0.00327949 0.01763299 0.01652169 0.03677868 0.03038802
0.02118312 0.01955573 0.01625624 0.01166484 ....]
from sklearn.gaussian_process import GaussianProcessRegressor
######## Fit GPR model
gpr_mod = GaussianProcessRegressor(n_restarts_optimizer=10, alpha=.5)
gpr = gpr_mod.fit(X, Y)
######## Create test meshgrid dataset
runtime_range = np.arange(60, 360, 30).tolist()
network_range = np.arange(5000, 50000, 5000).tolist()
operator_range = np.arange(2500, 30000, 2500).tolist()
X_grid = []
for runtime in runtime_range:
for network in network_range:
for operator in operator_range:
big_array.append([runtime, network, operator])
######## Predict on test dataset (which includes points from training dataset)
mu, std = gpr.predict(X_grid, return_std=True)
print(mu, '\n')
print(std)