Гауссовская регрессия процесса (sklearn) не в состоянии сделать прогноз без нуля - PullRequest
0 голосов
/ 01 октября 2018

Я обучил модель георадара склеарну над небольшим набором данных (пример ниже).Затем я создал сетку из точек тестовых данных, которая представляет собой более детализированную сетку обучающих данных, то есть имеет одинаковые (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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...