Как совместить сюжет двух моделей GPy? - PullRequest
1 голос
/ 24 мая 2019

Я рассчитал две модели регрессии ГП и хотел бы, чтобы они были изображены на одном рисунке.

Модель 1

kernel = GPy.kern.RBF(input_dim=1, variance=.1, lengthscale=1.)
m1 = GPy.models.GPRegression(xa, ya,kernel)
m1.optimize_restarts(num_restarts = 10)
m1.optimize(messages=True)

from IPython.display import display
display(m1)

fig1 = m1.plot(plot_density=True) 
m1.plot(plot_density=True)
GPy.plotting.show(fig2, filename='2')

Модель 2

m2 = GPy.models.GPRegression(xe, ye,kernel)
m2.optimize_restarts(num_restarts = 10)
m2.optimize(messages=True)

from IPython.display import display
display(m2)

fig2 = m2.plot(plot_density=True,)

GPy.plotting.show(fig2, filename='2')

Мне нужны оба графика на одной фигуре, либо в matplotlib, либо в виде графика, т.е. GPy.plotting.show(fig, filename='filename').

Спасибо

1 Ответ

1 голос
/ 29 мая 2019

Используя matplotlib, вы можете определить вспомогательный участок и указать используемый участок, используя те же оси (в частности, параметр ax).

import matplotlib.plt as plt
fig, ax = plt.subplots()
m1.plot(plot_density=True, ax=ax)
m2.plot(plot_density=True, ax=ax)

Я проверил это с набором тестовых данных:

# Random Test Data
import pods
data = pods.datasets.olympic_marathon_men()

# First X,Y Regression Model
kernel = GPy.kern.RBF(input_dim=1, variance=.1, lengthscale=1.)
m1 = GPy.models.GPRegression(data['X'], data['Y'], kernel)
m1.optimize_restarts(num_restarts = 10)
m1.optimize(messages=True)

# Second model; changed the X, Y slightly.
m2 = GPy.models.GPRegression(data['X'] + 5, data['Y'] + 3,kernel)
m2.optimize_restarts(num_restarts = 10)
m2.optimize(messages=True)

Связанный: Как лучше всего объединить два независимых графика с matplotlib?

Plot of two densities w/data

...