コード例 #1
0
def run_methods(train_points, train_targets, test_points, test_targets,
                model_parameters, m_list, file_name, title, show=False, full=True, vi=True):

    method = 'means'
    optimizer = 'L-BFGS-B'
    max_iter = 50
    options = {'maxiter': max_iter, 'disp': False, 'mydisp': True}

    means_r2 = []
    vi_r2 = []

    for m in m_list:
        print('m:', m)
        print('Finding means...')
        means = KMeans(n_clusters=m, n_init=1, max_iter=20)
        means.fit(train_points.T)
        inputs = means.cluster_centers_.T
        print('...found')

        model_covariance_obj = SquaredExponential(np.copy(model_parameters))
        new_gp = GPR(model_covariance_obj, method='means', optimizer=optimizer)
        res = new_gp.fit(train_points, train_targets, num_inputs=m, optimizer_options=options, inputs=inputs)
        predicted_y_test, _, _ = new_gp.predict(test_points)
        means_r2.append(r2_score(test_targets, predicted_y_test))

        if vi:
            model_covariance_obj = SquaredExponential(np.copy(model_parameters))
            new_gp = GPR(model_covariance_obj, method='vi', optimizer=optimizer)
            res = new_gp.fit(train_points, train_targets, num_inputs=m, optimizer_options=options, inputs=inputs)
            predicted_y_test, _, _ = new_gp.predict(test_points)
            vi_r2.append(r2_score(test_targets, predicted_y_test))

    if full:
        model_covariance_obj = SquaredExponential(np.copy(model_parameters))
        new_gp = GPR(model_covariance_obj, method='brute')
        res = new_gp.fit(train_points, train_targets, max_iter=max_iter)
        predicted_y_test, _, _ = new_gp.predict(test_points, train_points, train_targets)
        brute_r2 = r2_score(test_targets, predicted_y_test)

    plt.plot(range(len(m_list)), means_r2, '-kx', label='vi-means')
    if vi:
        plt.plot(range(len(m_list)), vi_r2, '-rx', label='vi')
    if full:
        plt.plot(range(len(m_list)), len(m_list) * [brute_r2], '--g', label='full GP')

    plt.xticks(range(len(m_list)), m_list)
    plt.xlabel('m')
    plt.ylabel('$R^2$-score on test data')
    # plt.ylim(0.5, 1)
    plt.legend(loc=4)
    plt.title(title)
    plt.savefig('../Plots/inducing_inputs/'+file_name + '.pgf')
    if show:
        plt.show()
コード例 #2
0
ファイル: visualization.py プロジェクト: afcarl/CourseProject
def onclick(event):
    plt.close('all')

    point_x, point_y = event.xdata, event.ydata
    data_points.append(point_x)
    data_targets.append(point_y)

    x_tr = np.array(data_points).reshape(-1)[None, :]
    y_tr = np.array(data_targets)
    new_gp = GPR(model_covariance_obj, method=method)
    # new_gp.fit(x_tr, y_tr, max_iter=max_iter)
    print(new_gp.covariance_obj.get_params())
    predicted_y_test, high, low = new_gp.predict(x_test, x_tr, y_tr)

    fig = plt.figure()
    gp_plot_reg_data(x_tr, y_tr, 'yo')
    gp_plot_reg_data(x_test, predicted_y_test, 'b')
    gp_plot_reg_data(x_test, means_y_test, '--b')
    gp_plot_reg_data(means_inducing_points, means_mean, 'bo', markersize=12)
    gp_plot_reg_data(x_test, means_low, '--g')
    gp_plot_reg_data(x_test, means_high, '--r')
    gp_plot_reg_data(x_test, low, 'g-')
    gp_plot_reg_data(x_test, high, 'r-')
    gp_plot_reg_data(x_test, y_test, 'y-')
    fig.canvas.mpl_connect('button_press_event', onclick)
    plt.ylim(-2, 2)
    plt.xlim(0, 1)
    plt.show()
コード例 #3
0
ファイル: visualization.py プロジェクト: afcarl/CourseProject
else:
    x_test = np.random.rand(dim, test_num)
y_tr, y_test = gp.generate_data(x_tr, x_test, seed=seed)


data_points = []
data_targets = []

fig = plt.figure()
gp_plot_reg_data(x_test, y_test, 'y-')

means_gp = GPR(model_covariance_obj, method='means')
means_gp.fit(x_tr, y_tr, num_inputs=ind_inputs_num, optimizer_options=lbfgsb_options)
print(model_covariance_obj.get_params())
means_inducing_points, means_mean, means_cov = means_gp.inducing_inputs
means_y_test, means_high, means_low = means_gp.predict(x_test)

def onclick(event):
    plt.close('all')

    point_x, point_y = event.xdata, event.ydata
    data_points.append(point_x)
    data_targets.append(point_y)

    x_tr = np.array(data_points).reshape(-1)[None, :]
    y_tr = np.array(data_targets)
    new_gp = GPR(model_covariance_obj, method=method)
    # new_gp.fit(x_tr, y_tr, max_iter=max_iter)
    print(new_gp.covariance_obj.get_params())
    predicted_y_test, high, low = new_gp.predict(x_test, x_tr, y_tr)
コード例 #4
0
# Generating data points
np.random.seed(seed)
x_tr = np.random.rand(dim, num)
if dim == 1:
    x_test = np.linspace(0, 1, test_num)
    x_test = x_test.reshape(1, test_num)
else:
    x_test = np.random.rand(dim, test_num)

y_tr, y_test = gp.generate_data(x_tr, x_test, seed=seed)

if method == 'brute':
    new_gp = GPR(model_covariance_obj)
    # res = new_gp.fit(x_tr, y_tr, max_iter=max_iter)
    predicted_y_test, high, low, samples = new_gp.predict(x_test,
                                                          x_tr,
                                                          y_tr,
                                                          n_samples=3)
    print(len(samples))
    print(samples[0].shape)

elif method == 'means' or method == 'vi':
    model_covariance_obj = SquaredExponential(model_params)
    new_gp = GPR(model_covariance_obj, method=method, optimizer=optimizer)
    res = new_gp.fit(x_tr,
                     y_tr,
                     num_inputs=ind_inputs_num,
                     optimizer_options=lbfgsb_options)
    # res = new_gp.fit(x_tr, y_tr, num_inputs=ind_inputs_num,  optimizer_options=projected_newton_options)
    inducing_points, mean, cov = new_gp.inducing_inputs
    predicted_y_test, high, low = new_gp.predict(x_test,
                                                 return_confidence_region=True)
コード例 #5
0
model_params = np.array([0.6, 0.3, 0.1])
model_covariance_obj = SquaredExponential(model_params)
num = 200
test_num = 100
dim = 1
seed = 21
method = 'means'  # possible methods: 'brute', 'vi', 'means', 'svi'
parametrization = 'natural'  # possible parametrizations for svi method: cholesky, natural
ind_inputs_num = 30
max_iter = 100

if method == 'brute':
    new_gp = GPR(model_covariance_obj)
    new_gp.fit(x_tr, y_tr, max_iter=max_iter)
    predicted_y_test, high, low = new_gp.predict(x_test, x_tr, y_tr)

elif method == 'means' or method == 'vi':
    model_covariance_obj = SquaredExponential(model_params)
    new_gp = GPR(model_covariance_obj, method=method)
    start = time.time()
    new_gp.fit(x_tr, y_tr, num_inputs=ind_inputs_num, max_iter=max_iter)
    print(time.time() - start)
    inducing_points, mean, cov = new_gp.inducing_inputs
    predicted_y_test, high, low = new_gp.predict(x_test)

elif method == 'svi':
    model_covariance_obj = SquaredExponential(model_params)
    new_gp = GPR(model_covariance_obj, method=method, parametrization=parametrization)
    new_gp.fit(x_tr, y_tr, num_inputs=ind_inputs_num, max_iter=max_iter)
    inducing_points, mean, cov = new_gp.inducing_inputs
コード例 #6
0
# Generating data points
np.random.seed(seed)
x_tr = np.random.rand(dim, num)
if dim == 1:
    x_test = np.linspace(0, 1, test_num)
    x_test = x_test.reshape(1, test_num)
else:
    x_test = np.random.rand(dim, test_num)

y_tr, y_test = gp.generate_data(x_tr, x_test, seed=seed)

if method == 'brute':
    new_gp = GPR(model_covariance_obj)
    # res = new_gp.fit(x_tr, y_tr, max_iter=max_iter)
    predicted_y_test, high, low, samples = new_gp.predict(x_test, x_tr, y_tr, n_samples=3)
    print(len(samples))
    print(samples[0].shape)

elif method == 'means' or method == 'vi':
    model_covariance_obj = SquaredExponential(model_params)
    new_gp = GPR(model_covariance_obj, method=method, optimizer=optimizer)
    res = new_gp.fit(x_tr, y_tr, num_inputs=ind_inputs_num,  optimizer_options=lbfgsb_options)
    # res = new_gp.fit(x_tr, y_tr, num_inputs=ind_inputs_num,  optimizer_options=projected_newton_options)
    inducing_points, mean, cov = new_gp.inducing_inputs
    predicted_y_test, high, low = new_gp.predict(x_test, return_confidence_region=True)

elif method == 'svi':
    model_covariance_obj = SquaredExponential(model_params)
    if parametrization == 'natural':
        opts = sg_options