Построение доверительных интервалов гауссовского процесса с использованием python - PullRequest
0 голосов
/ 10 июля 2020

Я использовал scikit-learn функцию регрессии гауссовского процесса, чтобы сделать прогноз, который работает очень хорошо. Однако, когда я пытаюсь вычислить доверительные интервалы и построить его вместе с расчетным значением, я получаю следующую ошибку: ValueError: Input passed into argument "'y1'"is not 1-dimensional.

Отображение полной ошибки

Traceback (most recent call last):

  File "<ipython-input-2-9591f875973b>", line 5, in <module>
    alpha=.001, label='95% confidence interval', color='#B22222')

  File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 2592, in fill_between
    **({"data": data} if data is not None else {}), **kwargs)

  File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\__init__.py", line 1599, in inner
    return func(ax, *map(sanitize_sequence, args), **kwargs)

  File "C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py", line 5239, in fill_between
    'is not 1-dimensional.')

ValueError: Input passed into argument "'y1'"is not 1-dimensional.

Я не поймите эту ошибку и где я ошибся. Не могли бы вы помочь мне с этим. Заранее благодарим.

это образцы входных и выходных данных, которые я получил из библиотеки GP.

 X_te = [0.153353 0.0515063 0.586284 0.0339375 0.122825 0.177068]
 x_tr = [7.84039 8.4702 9.65098 11.1335 11.7386 14.9299]
 y_tr= [849.677 1098.86 1465.67 2016.77 2139.09 2300.13]
 pred_y= [0.217954 0.0305254 0.98304 0.00793167 0.152876 0.272415]

Эти вышеупомянутые типы данных - 'Array of float 64'

Код имеет следующий вид:

 confidence_interval = sigma * 1.96
# low_CIs=pred_y - confidence_interval
# Upper_CIs= pred_y + confidence_interval

# Plot the function, the prediction and the 95% confidence interval based on
plt.scatter(X_tr, y_tr, label='Train data')
plt.fill_between(X_tr[:,0],
                 pred_y - confidence_interval,
                 pred_y + confidence_interval,
                 alpha=.001, label='95% confidence interval', color='#B22222')
# plt.gca().set_title(gp.kernel_)
plt.plot(X_tr, pred_y, label='Prediction')

альфа-значения рассчитываются путем оптимизации гиперпараметров.

1 Ответ

0 голосов
/ 10 июля 2020

это, вероятно, потому, что scikit learn возвращает свой прогноз как 1d-матрицу вместо вектора, в то время как fill_between принимает вектор в качестве входных данных. попробуйте использовать pred_y.ravel () и убедитесь, что его форма (n,) instea

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...