Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
port MKL examples to new API (#4271)
-add various default ctors -make CombinedKernel's has_property lazy evaluated and recursive -register parameters by base class -add binary_labels conversion to MKLClassification -update integration test data
- Loading branch information
Showing
10 changed files
with
97 additions
and
64 deletions.
There are no files selected for viewing
Submodule data
updated
2 files
+18 −0 | testsuite/meta/binary/multiple_kernel_learning.dat | |
+4 −5 | testsuite/meta/regression/multiple_kernel_learning.dat |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,51 +1,49 @@ | ||
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_kernel] | ||
PolyKernel poly_kernel(10,2) | ||
GaussianKernel gauss_kernel_1(2.0) | ||
GaussianKernel gauss_kernel_2(3.0) | ||
Kernel poly_kernel = kernel("PolyKernel", degree=2) | ||
Kernel gauss_kernel_1 = kernel("GaussianKernel", log_width=0.0) | ||
Kernel gauss_kernel_2 = kernel("GaussianKernel", log_width=1.0) | ||
#![create_kernel] | ||
|
||
#![create_combined_train] | ||
CombinedKernel combined_kernel() | ||
combined_kernel.append_kernel(poly_kernel) | ||
combined_kernel.append_kernel(gauss_kernel_1) | ||
combined_kernel.append_kernel(gauss_kernel_2) | ||
Kernel combined_kernel = kernel("CombinedKernel") | ||
combined_kernel.add("kernel_array", poly_kernel) | ||
combined_kernel.add("kernel_array", gauss_kernel_1) | ||
combined_kernel.add("kernel_array", gauss_kernel_2) | ||
combined_kernel.init(features_train, features_train) | ||
#![create_combined_train] | ||
|
||
#![train_mkl] | ||
SVRLight binary_svm_solver() | ||
MKLRegression mkl(binary_svm_solver) | ||
mkl.set_kernel(combined_kernel) | ||
mkl.set_labels(labels_train) | ||
Machine binary_svm_solver = machine("SVRLight") | ||
Machine mkl = machine("MKLRegression", svm=binary_svm_solver, kernel=combined_kernel, labels=labels_train) | ||
mkl.train() | ||
#![train_mkl] | ||
|
||
#![extract_weights] | ||
RealVector beta = combined_kernel.get_subkernel_weights() | ||
RealVector alpha = mkl.get_alphas() | ||
RealVector alpha = mkl.get_real_vector("m_alpha") | ||
#![extract_weights] | ||
|
||
#![mkl_apply] | ||
combined_kernel.init(features_train, features_test) | ||
RegressionLabels labels_predict = mkl.apply_regression() | ||
Labels labels_predict = mkl.apply() | ||
#![mkl_apply] | ||
|
||
#![evaluate_error] | ||
MeanSquaredError error() | ||
real mse = error.evaluate(labels_predict, labels_test) | ||
Evaluation eval = evaluation("MeanSquaredError") | ||
real mse = eval.evaluate(labels_predict, labels_test) | ||
#![evaluate_error] | ||
|
||
# additional integration testing variables | ||
RealVector output = labels_predict.get_labels() | ||
RealVector output = labels_predict.get_real_vector("labels") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@karlnapf when you add to an old class a function that overrides a virtual method with
override
then the compiler will complain - warning - that other virtual methods are not declared with override, see:so when patching an old class either declare virtual functions everywhere with
override
or use the old construct ofvirtual....
but plz dont mix it