Skip to content

Commit

Permalink
using factory methods in kernel ridge regression meta example (#4297)
Browse files Browse the repository at this point in the history
* using factory methods
* cast labels to regression
* data update
  • Loading branch information
shubham808 authored and karlnapf committed May 24, 2018
1 parent ee3da84 commit 911d35d
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 19 deletions.
2 changes: 1 addition & 1 deletion data
23 changes: 11 additions & 12 deletions examples/meta/src/regression/kernel_ridge_regression.sg
@@ -1,37 +1,36 @@
CSVFile f_feats_train("../../data/regression_1d_sinc_features_train.dat")
CSVFile f_feats_test("../../data/regression_1d_sinc_features_test.dat")
CSVFile f_labels_train("../../data/regression_1d_sinc_labels_train.dat")
CSVFile f_labels_test("../../data/regression_1d_sinc_labels_test.dat")
File f_feats_train = csv_file("../../data/regression_1d_sinc_features_train.dat")
File f_feats_test = csv_file("../../data/regression_1d_sinc_features_test.dat")
File f_labels_train = csv_file("../../data/regression_1d_sinc_labels_train.dat")
File f_labels_test = csv_file("../../data/regression_1d_sinc_labels_test.dat")

#![create_features]
Features features_train = features(f_feats_train)
Features features_test = features(f_feats_test)
RegressionLabels labels_train(f_labels_train)
RegressionLabels labels_test(f_labels_test)
Labels labels_train = labels(f_labels_train)
Labels labels_test = labels(f_labels_test)
#![create_features]

#![create_appropriate_kernel]
Kernel k = kernel("GaussianKernel", log_width=0.0)
#![create_appropriate_kernel]

#![create_instance]
real tau = 0.001
KernelRidgeRegression krr(tau, k, labels_train)
Machine krr = machine("KernelRidgeRegression", labels=labels_train, tau=0.001, kernel=k)
#![create_instance]

#![train_and_apply]
krr.train(features_train)
RegressionLabels labels_predict = krr.apply_regression(features_test)
Labels labels_predict = krr.apply_regression(features_test)
#![train_and_apply]

#![extract_alpha]
RealVector alpha = krr.get_alphas()
RealVector alphas = krr.get_real_vector("m_alpha")
#![extract_alpha]

#![evaluate_error]
MeanSquaredError eval()
Evaluation eval = evaluation("MeanSquaredError")
real mse = eval.evaluate(labels_predict, labels_test)
#![evaluate_error]

# integration testing variables
RealVector output = labels_test.get_labels()
RealVector output = labels_test.get_real_vector("labels")
8 changes: 2 additions & 6 deletions src/shogun/regression/KernelRidgeRegression.cpp
Expand Up @@ -42,7 +42,7 @@ bool CKernelRidgeRegression::solve_krr_system()
{
SGMatrix<float64_t> kernel_matrix(kernel->get_kernel_matrix());
int32_t n = kernel_matrix.num_rows;
SGVector<float64_t> y = ((CRegressionLabels*)m_labels)->get_labels();
SGVector<float64_t> y = regression_labels(m_labels)->get_labels();

for(index_t i=0; i<n; i++)
kernel_matrix(i,i) += m_tau;
Expand All @@ -64,11 +64,7 @@ bool CKernelRidgeRegression::solve_krr_system()

bool CKernelRidgeRegression::train_machine(CFeatures *data)
{
if (!m_labels)
SG_ERROR("No labels set\n")

if (m_labels->get_label_type() != LT_REGRESSION)
SG_ERROR("Real labels needed for kernel ridge regression.\n")
REQUIRE(m_labels, "No labels set\n")

if (data)
{
Expand Down

0 comments on commit 911d35d

Please sign in to comment.