This page lists ready to run shogun examples for the Ruby Modular interface.
To run the examples issue
ruby name_of_example.rb
# This example shows how to use a custom defined kernel function for training a # two class Support Vector Machine (SVM) classifier on a randomly generated # examples. The SVM regularization constant is set to C=1. require 'modshogun' require 'load' require 'narray' require 'pp' parameter_list = [[1,7],[2,8]] def classifier_custom_kernel_modular(c=1,dim=7) Modshogun::Math.init_random(c) lab = (2*NArray.float(dim).random! - 1).sign data= NMatrix.float(dim, dim).random! symdata=data*data.transpose + NMatrix.float(dim,dim).unit kernel=Modshogun::CustomKernel.new kernel.set_full_kernel_matrix_from_full(data) labels=Modshogun::BinaryLabels.new(lab) svm=Modshogun::LibSVM.new(c, kernel, labels) svm.train() predictions =svm.apply() out=svm.apply().get_labels() return svm,out end if __FILE__ == $0 puts 'custom_kernel' pp classifier_custom_kernel_modular(*parameter_list[0]) end
# In this example a two-class support vector machine classifier is trained on a # 2-dimensional randomly generated data set and the trained classifier is used to # predict labels of test examples. As training algorithm the LIBSVM solver is used # with SVM regularization parameter C=1 and a Gaussian kernel of width 2.1. # # For more details on LIBSVM solver see http://www.csie.ntu.edu.tw/~cjlin/libsvm/ require 'modshogun' require 'load' require 'narray' @num = 1000 @dist = 1 @width = 2.1 C = 1 puts "generating training data" traindata_real = gen_rand_ary @num testdata_real = gen_rand_ary @num puts "generating labels" trainlab = gen_ones_vec @num testlab = gen_ones_vec @num puts "doing feature stuff" feats_train = Modshogun::RealFeatures.new feats_train.set_feature_matrix traindata_real feats_test = Modshogun::RealFeatures.new feats_test.set_feature_matrix testdata_real kernel = Modshogun::GaussianKernel.new feats_train, feats_train, @width puts "labeling stuff" labels = Modshogun::BinaryLabels.new labels.set_labels trainlab svm = Modshogun::LibSVM.new C, kernel, labels svm.train puts "the grand finale" kernel.init feats_train, feats_test out = svm.apply.get_labels testerr = mean out.sign.eql_items? testlab puts testerr
# In this example an agglomerative hierarchical single linkage clustering method # is used to cluster a given toy data set. Starting with each object being # assigned to its own cluster clusters are iteratively merged. Here the clusters # are merged that have the closest (minimum distance, here set via the Euclidean # distance object) two elements. require 'modshogun' require 'pp' require 'load' traindat = LoadMatrix.load_numbers('../data/fm_train_real.dat') parameter_list = [[traindat,3],[traindat,4]] def clustering_hierarchical_modular(fm_train=traindat,merges=3) feats_train=Modshogun::RealFeatures.new feats_train.set_feature_matrix(fm_train) distance=Modshogun::EuclideanDistance.new(feats_train, feats_train) hierarchical=Modshogun::Hierarchical.new(merges, distance) hierarchical.train() out_distance = hierarchical.get_merge_distances() out_cluster = hierarchical.get_cluster_pairs() return hierarchical,out_distance,out_cluster end if __FILE__ == $0 puts 'Hierarchical' pp clustering_hierarchical_modular(*parameter_list[0]) end
# In this example toy data is being preprocessed using the Hessian Locally Linear Embedding algorithm # as described in # # Donoho, D., & Grimes, C. (2003). # Hessian eigenmaps: new tools for nonlinear dimensionality reduction. # Proceedings of National Academy of Science (Vol. 100, pp. 5591-5596). require 'modshogun' require 'pp' require 'load' data = LoadMatrix.load_numbers('../data/fm_train_real.dat') parameter_list = [[data,10],[data,20]] def converter_hessianlocallylinearembedding_modular(data,k) features = Modshogun::RealFeatures.new features.set_feature_matrix(data) preprocessor = Modshogun::HessianLocallyLinearEmbedding.new preprocessor.set_target_dim(1) preprocessor.set_k(k) preprocessor.apply(features) return features end if __FILE__ == $0 puts 'HessianLocallyLinearEmbedding' pp converter_hessianlocallylinearembedding_modular(*parameter_list[0]) end
# An approach as applied below, which shows the processing of input data # from a file becomes a crucial factor for writing your own sample applications. # This approach is just one example of what can be done using the distance # functions provided by shogun. # # First, you need to determine what type your data will be, because this # will determine the distance function you can use. # # This example loads two stored matrices of real values from different # files and initializes the matrices to 'RealFeatures'. # Each column of the matrices corresponds to one data point. # # The distance initialized by two data sets (the same data set as shown in the # first call) controls the processing of the given data points, where a pairwise # distance matrix is computed by 'get_distance_matrix'. # # The resulting distance matrix can be reaccessed by 'get_distance_matrix'. # # The method call 'init'* binds the given data sets, where a pairwise distance # matrix between these two data sets is computed by 'get_distance_matrix'. # # The resulting distance matrix can be reaccessed by 'get_distance_matrix'. # # *Note that the previous computed distance matrix can no longer be # reaccessed by 'get_distance_matrix'. # # For more details see doc/classshogun_1_1CBrayCurtisDistance.html. # # Obviously, using the Bray Curtis distance is not limited to this showcase # example. require 'modshogun' require 'pp' require 'load' traindat = LoadMatrix.load_numbers('../data/fm_train_real.dat') testdat = LoadMatrix.load_numbers('../data/fm_test_real.dat') parameter_list = [[traindat,testdat],[traindat,testdat]] def distance_braycurtis_modular(fm_train_real=traindat, fm_test_real=testdat) feats_train=Modshogun::RealFeatures.new feats_train.set_feature_matrix(fm_train_real) feats_test=Modshogun::RealFeatures.new feats_test.set_feature_matrix(fm_test_real) distance=Modshogun::BrayCurtisDistance.new(feats_train, feats_train) dm_train=distance.get_distance_matrix() distance.init(feats_train, feats_test) dm_test=distance.get_distance_matrix() return distance,dm_train,dm_test end if __FILE__ == $0 puts 'BrayCurtisDistance' pp distance_braycurtis_modular(*parameter_list[0]) end
# An approach as applied below, which shows the processing of input data # from a file becomes a crucial factor for writing your own sample applications. # This approach is just one example of what can be done using the distance # functions provided by shogun. # # First, you need to determine what type your data will be, because this # will determine the distance function you can use. # # This example loads two stored matrices of real values from different # files and initializes the matrices to 'RealFeatures'. # Each column of the matrices corresponds to one data point. # # The distance initialized by two data sets (the same data set as shown in the # first call) controls the processing of the given data points, where a pairwise # distance (dissimilarity ratio) matrix is computed by 'get_distance_matrix'. # # The resulting distance matrix can be reaccessed by 'get_distance_matrix'. # # The method call 'init'* binds the given data sets, where a pairwise distance # matrix between these two data sets is computed by 'get_distance_matrix'. # # The resulting distance matrix can be reaccessed by 'get_distance_matrix'. # # *Note that the previous computed distance matrix can no longer be # reaccessed by 'get_distance_matrix'. # # For more details see doc/classshogun_1_1CCanberraMetric.html. # # Obviously, using the Canberra distance is not limited to this showcase # example. require 'modshogun' require 'pp' require 'load' traindat = LoadMatrix.load_numbers('../data/fm_train_real.dat') testdat = LoadMatrix.load_numbers('../data/fm_test_real.dat') parameter_list = [[traindat,testdat],[traindat,testdat]] def distance_canberra_modular(fm_train_real=traindat,fm_test_real=testdat) feats_train=Modshogun::RealFeatures.new feats_train.set_feature_matrix(fm_train_real) feats_test=Modshogun::RealFeatures.new feats_test.set_feature_matrix(fm_test_real) distance=Modshogun::CanberraMetric.new(feats_train, feats_train) dm_train=distance.get_distance_matrix() distance.init(feats_train, feats_test) dm_test=distance.get_distance_matrix() return distance,dm_train,dm_test end if __FILE__ == $0 puts 'CanberaMetric' pp distance_canberra_modular(*parameter_list[0]) end
# In this example the Histogram algorithm object computes a histogram over all # 16bit unsigned integers in the features. require 'modshogun' require 'pp' require 'load' traindna = LoadMatrix.load_dna('../data/fm_train_dna.dat') parameter_list = [[traindna, 3, 0, false], [traindna, 4, 0, false]] def distribution_histogram_modular(fm_dna=traindna, order=3, gap=0, reverse=false) charfeat=Modshogun::StringCharFeatures.new(Modshogun::DNA) charfeat.set_features(fm_dna) feats=Modshogun::StringWordFeatures.new(charfeat.get_alphabet()) feats.obtain_from_char(charfeat, order-1, order, gap, reverse) histo=Modshogun::Histogram.new histo.set_features(feats) histo.train() histo.get_histogram() num_examples=feats.get_num_vectors() num_param=histo.get_num_model_parameters() #for i in xrange(num_examples): # for j in xrange(num_param): # histo.get_log_derivative(j, i) out_likelihood = histo.get_log_likelihood() out_sample = histo.get_log_likelihood_sample() return histo,out_sample,out_likelihood end ########################################################################### # call functions ########################################################################### if __FILE__ == $0 puts 'Histogram' pp distribution_histogram_modular(*parameter_list[0]) end
# This example shows how to read and write plain ascii files, binary files and # hdf5 datasets. # # For ascii files it shows how to obtain shogun's RealFeatures # (a simple feature matrix of doubles with 1 column == 1 example, nr_columns == # number of examples) and also sparse features in SVM light format. # # Binary files use some custom native format and datasets can be read/written # from/to hdf5 files with arbitrary group / path. require 'load' require 'modshogun' require 'pp' data=LoadMatrix.load_numbers('../data/fm_train_real.dat') label=LoadMatrix.load_numbers('../data/label_train_twoclass.dat') parameter_list=[[data,label]] def features_io_modular(fm_train_real, label_train_twoclass) feats=Modshogun::SparseRealFeatures.new feats.set_full_feature_matrix(fm_train_real) feats2=Modshogun::SparseRealFeatures.new f=Modshogun::BinaryFile.new("fm_train_sparsereal.bin","w") feats.save(f) f.close() f=Modshogun::AsciiFile.new("fm_train_sparsereal.ascii","w") feats.save(f) f.close() f=Modshogun::BinaryFile.new("fm_train_sparsereal.bin", "r") feats2.load(f) f.close() f=Modshogun::AsciiFile.new("fm_train_sparsereal.ascii") feats2.load(f) f.close() feats=Modshogun::RealFeatures.new feats.set_feature_matrix(fm_train_real) feats2=Modshogun::RealFeatures.new f=Modshogun::BinaryFile.new("fm_train_real.bin","w") feats.save(f) f.close() f=Modshogun::HDF5File.new("fm_train_real.h5","w", "/data/doubles") feats.save(f) f.close() f=Modshogun::AsciiFile.new("fm_train_real.ascii","w") feats.save(f) f.close() f=Modshogun::BinaryFile.new("fm_train_real.bin") feats2.load(f) f.close() f=Modshogun::AsciiFile.new("fm_train_real.ascii") feats2.load(f) f.close() lab=Modshogun::MulticlassLabels.new([0.0,1.0,2.0,3.0]) lab2=Modshogun::MulticlassLabels.new f=Modshogun::AsciiFile.new("label_train_twoclass.ascii","w") lab.save(f) f.close() f=Modshogun::BinaryFile.new("label_train_twoclass.bin","w") lab.save(f) f.close() f=Modshogun::HDF5File.new("label_train_real.h5","w", "/data/labels") lab.save(f) f.close() f=Modshogun::AsciiFile.new("label_train_twoclass.ascii") lab2.load(f) f.close() f=Modshogun::BinaryFile.new("label_train_twoclass.bin") lab2.load(f) f.close() f=Modshogun::HDF5File.new("fm_train_real.h5","r", "/data/doubles") feats2.load(f) f.close() f=Modshogun::HDF5File.new("label_train_real.h5","r", "/data/labels") lab2.load(f) f.close() #pp lab.get_labels() ##clean up #import os #for f in ['fm_train_sparsereal.bin','fm_train_sparsereal.ascii', # 'fm_train_real.bin','fm_train_real.h5','fm_train_real.ascii', # 'label_train_real.h5', 'label_train_twoclass.ascii','label_train_twoclass.bin']: # os.unlink(f) #end return feats, feats2, lab, lab2 end if __FILE__ == $0 puts 'Features IO' pp features_io_modular(*parameter_list[0]) end
# This example demonstrates how to read and write data in the SVMLight Format # from Shogun. # require 'modshogun' require 'pp' parameter_list=[['../data/train_sparsereal.light']] def features_read_svmlight_format_modular(fname) f=Modshogun::SparseRealFeatures.new lab=f.load_svmlight_file(fname) f.write_svmlight_file('testwrite.light', lab) end if __FILE__ == $0 puts 'Reading SVMLIGHT format' pp features_read_svmlight_format_modular(*parameter_list[0]) end
# This example demonstrates how to encode ASCII-strings (255 symbols) in shogun. require 'modshogun' require 'pp' strings=['hey','guys','i','am','a','string'] parameter_list=[strings] def features_string_char_modular(strings) #create string features f=Modshogun::StringCharFeatures.new(strings, Modshogun::RAWBYTE) #and output several stats #puts "max string length", f.get_max_vector_length #puts "number of strings", f.get_num_vectors #puts "length of first string", f.get_vector_length(0) #puts "string[5]", f.get_feature_vector(5) #puts "strings", f.get_features #replace string 0 f.set_feature_vector(['t','e','s','t'], 0) return f.get_features, f end if __FILE__ == $0 puts 'StringCharFeatures' pp features_string_char_modular(*parameter_list) end
# In this example the ANOVA kernel is being computed for toy data. require 'modshogun' require 'pp' require 'load' ########################################################################### # anova kernel ########################################################################### traindat = LoadMatrix.load_numbers('../data/fm_train_real.dat') testdat = LoadMatrix.load_numbers('../data/fm_test_real.dat') parameter_list = [[traindat,testdat,2,10], [traindat,testdat,5,10]] def kernel_anova_modular(fm_train_real=traindat,fm_test_real=testdat,cardinality=2, size_cache=10) feats_train=Modshogun::RealFeatures.new feats_train.set_feature_matrix(fm_train_real) feats_test=Modshogun::RealFeatures.new feats_test.set_feature_matrix(fm_test_real) kernel=Modshogun::ANOVAKernel.new(feats_train, feats_train, cardinality, size_cache) for i in 0..feats_train.get_num_vectors for j in 0..feats_train.get_num_vectors k1 = kernel.compute_rec1(i,j) k2 = kernel.compute_rec2(i,j) if (k1-k2).abs > 1e-10 puts "|#{k1}|#{k2}|" end end end km_train=kernel.get_kernel_matrix() kernel.init(feats_train, feats_test) km_test=kernel.get_kernel_matrix() return km_train, km_test, kernel end if __FILE__ == $0 puts 'ANOVA' pp kernel_anova_modular(*parameter_list[0]) end
# This example demonstrates the use of the AUC Kernel. require 'load' require 'modshogun' require 'pp' traindat = LoadMatrix.load_numbers('../data/fm_train_real.dat') testdat = LoadMatrix.load_labels('../data/label_train_twoclass.dat') parameter_list = [[traindat,testdat,1.7], [traindat,testdat,1.6]] def kernel_auc_modular(fm_train_real=traindat,label_train_real=testdat,width=1.7) # *** feats_train=RealFeatures(fm_train_real) feats_train=Modshogun::RealFeatures.new feats_train.set_feature_matrix(fm_train_real) # *** subkernel=GaussianKernel(feats_train, feats_train, width) subkernel=Modshogun::GaussianKernel.new(feats_train, feats_train, width) # *** kernel=AUCKernel(0, subkernel) kernel=Modshogun::AUCKernel.new(0, subkernel) kernel.setup_auc_maximization( Modshogun::BinaryLabels.new(label_train_real) ) km_train=kernel.get_kernel_matrix() return kernel end if __FILE__ == $0 puts 'AUC' pp kernel_auc_modular(*parameter_list[0]) end
# In this example the Cauchy kernel is being computed for toy data. require 'modshogun' require 'pp' require 'load' traindat = LoadMatrix.load_numbers('../data/fm_train_real.dat') testdat = LoadMatrix.load_numbers('../data/fm_test_real.dat') parameter_list=[[traindat,testdat, 1.0],[traindat,testdat, 10.0]] def kernel_cauchy_modular(fm_train_real=traindat,fm_test_real=testdat, sigma=1.0) feats_train=Modshogun::RealFeatures.new feats_train.set_feature_matrix(fm_train_real) feats_test=Modshogun::RealFeatures.new feats_test.set_feature_matrix(fm_test_real) distance=Modshogun::EuclideanDistance.new(feats_train, feats_train) kernel=Modshogun::CauchyKernel.new(feats_train, feats_train, sigma, distance) km_train=kernel.get_kernel_matrix() kernel.init(feats_train, feats_test) km_test=kernel.get_kernel_matrix() return km_train,km_test,kernel end if __FILE__ == $0 puts 'Cauchy' pp kernel_cauchy_modular(*parameter_list[0]) end
# This is an example for the initialization of the chi2-kernel on real data, where # each column of the matrices corresponds to one training/test example. require 'modshogun' require 'pp' require 'load' ########################################################################### # chi2 kernel ########################################################################### traindat = LoadMatrix.load_numbers('../data/fm_train_real.dat') testdat = LoadMatrix.load_numbers('../data/fm_test_real.dat') parameter_list = [[traindat,testdat,1.4,10], [traindat,testdat,1.5,10]] def kernel_chi2_modular(fm_train_real=traindat,fm_test_real=testdat,width=1.4, size_cache=10) feats_train=Modshogun::RealFeatures.new feats_train.set_feature_matrix(fm_train_real) feats_test=Modshogun::RealFeatures.new feats_test.set_feature_matrix(fm_test_real) kernel=Modshogun::Chi2Kernel.new(feats_train, feats_train, width, size_cache) km_train=kernel.get_kernel_matrix() kernel.init(feats_train, feats_test) km_test=kernel.get_kernel_matrix() return km_train,km_test,kernel end if __FILE__ == $0 puts 'Chi2' pp kernel_chi2_modular(*parameter_list[0]) end
# In this example the circular kernel is being computed for toy data. require 'modshogun' require 'pp' require 'load' traindat = LoadMatrix.load_numbers('../data/fm_train_real.dat') testdat = LoadMatrix.load_numbers('../data/fm_test_real.dat') parameter_list=[[traindat,testdat, 1.0],[traindat,testdat, 5.0]] def kernel_circular_modular(fm_train_real=traindat,fm_test_real=testdat, sigma=1.0) feats_train=Modshogun::RealFeatures.new feats_train.set_feature_matrix(fm_train_real) feats_test=Modshogun::RealFeatures.new feats_test.set_feature_matrix(fm_test_real) distance=Modshogun::EuclideanDistance.new(feats_train, feats_train) kernel=Modshogun::CircularKernel.new(feats_train, feats_train, sigma, distance) km_train=kernel.get_kernel_matrix() kernel.init(feats_train, feats_test) km_test=kernel.get_kernel_matrix() return km_train,km_test,kernel end if __FILE__ == $0 puts 'Circular' pp kernel_circular_modular(*parameter_list[0]) end
# In this example the combined kernel of custom kernel and poly kernel is being computed for toy data. require 'modshogun' require 'pp' require 'load' traindat = LoadMatrix.load_numbers('../data/fm_train_real.dat') testdat = LoadMatrix.load_numbers('../data/fm_test_real.dat') label_traindat = LoadMatrix.load_labels('../data/label_train_twoclass.dat') parameter_list= [[traindat,testdat,label_traindat],[traindat,testdat,label_traindat]] def kernel_combined_custom_poly_modular(fm_train_real = traindat,fm_test_real = testdat,fm_label_twoclass=label_traindat) kernel = Modshogun::CombinedKernel.new feats_train = Modshogun::CombinedFeatures.new tfeats = Modshogun::RealFeatures.new tfeats.set_feature_matrix(fm_train_real) tkernel = Modshogun::PolyKernel.new(10,3) tkernel.init(tfeats, tfeats) k = tkernel.get_kernel_matrix() f = Modshogun::CustomKernel.new f.set_full_kernel_matrix_from_full(k) kernel.append_kernel(f) subkfeats_train = Modshogun::RealFeatures.new subkfeats_train.set_feature_matrix(fm_train_real) feats_train.append_feature_obj(subkfeats_train) subkernel = Modshogun::PolyKernel.new(10,2) kernel.append_kernel(subkernel) kernel.init(feats_train, feats_train) labels = Modshogun::BinaryLabels.new(fm_label_twoclass) svm = Modshogun::LibSVM.new(1.0, kernel, labels) svm.train() kernel = Modshogun::CombinedKernel.new feats_pred = Modshogun::CombinedFeatures.new pfeats = Modshogun::RealFeatures.new pfeats.set_feature_matrix(fm_test_real) tkernel = Modshogun::PolyKernel.new(10,3) tkernel.init(tfeats, pfeats) k = tkernel.get_kernel_matrix() f = Modshogun::CustomKernel.new f.set_full_kernel_matrix_from_full(k) kernel.append_kernel(f) subkfeats_test = Modshogun::RealFeatures.new subkfeats_test.set_feature_matrix(fm_test_real) feats_pred.append_feature_obj(subkfeats_test) subkernel = Modshogun::PolyKernel.new(10, 2) kernel.append_kernel(subkernel) kernel.init(feats_train, feats_pred) svm.set_kernel(kernel) svm.apply() km_train=kernel.get_kernel_matrix() return km_train,kernel end if __FILE__ == $0 puts 'Combined Custom Poly Modular' pp kernel_combined_custom_poly_modular(*parameter_list[0]) end
# The well known Gaussian kernel (swiss army knife for SVMs) on dense real valued features. require 'narray' require 'modshogun' require 'load' require 'pp' traindat = LoadMatrix.load_numbers('../data/fm_train_real.dat') testdat = LoadMatrix.load_numbers('../data/fm_test_real.dat') parameter_list=[[traindat,testdat, 1.3],[traindat,testdat, 1.4]] def kernel_gaussian_modular(fm_train_real=traindat,fm_test_real=testdat, width=1.3) pp fm_train_real feats_train=Modshogun::RealFeatures.new feats_train.set_feature_matrix fm_train_real feats_test=Modshogun::RealFeatures.new feats_test.set_feature_matrix fm_test_real kernel=Modshogun::GaussianKernel.new feats_train, feats_train, width km_train=kernel.get_kernel_matrix() kernel.init(feats_train, feats_test) km_test=kernel.get_kernel_matrix() pp km_train return km_train,km_test,kernel end if __FILE__ == $0 then puts 'Gaussian' kernel_gaussian_modular(*parameter_list[0]) end
# In this example a complex model parameters selection tree # is being constructed require 'modshogun' require 'load' require 'pp' # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # Written (W) 2011 Heiko Strathmann # Copyright (C) 2011 Berlin Institute of Technology and Max-Planck-Society # Trancekoded (T) 2011 Justin Patera aka serialhex def modelselection_parameter_tree_modular() root=Modshogun::ModelSelectionParameters.new combinations=root.get_combinations() combinations.get_num_elements() c=Modshogun::ModelSelectionParameters.new('C') root.append_child(c) c.build_values(1, 11, Modshogun::R_EXP) power_kernel=Modshogun::PowerKernel.new param_power_kernel=Modshogun::ModelSelectionParameters.new('kernel', power_kernel) root.append_child(param_power_kernel) param_power_kernel_degree=Modshogun::ModelSelectionParameters.new('degree') param_power_kernel_degree.build_values(1, 1, Modshogun::R_EXP) param_power_kernel.append_child(param_power_kernel_degree) metric1=Modshogun::MinkowskiMetric.new(10) param_power_kernel_metric1=Modshogun::ModelSelectionParameters.new('distance', metric1) param_power_kernel.append_child(param_power_kernel_metric1) param_power_kernel_metric1_k=Modshogun::ModelSelectionParameters.new('k') param_power_kernel_metric1_k.build_values(1, 12, Modshogun::R_LINEAR) param_power_kernel_metric1.append_child(param_power_kernel_metric1_k) gaussian_kernel=Modshogun::GaussianKernel.new param_gaussian_kernel=Modshogun::ModelSelectionParameters.new('kernel', gaussian_kernel) root.append_child(param_gaussian_kernel) param_gaussian_kernel_width=Modshogun::ModelSelectionParameters.new('width') param_gaussian_kernel_width.build_values(1, 2, Modshogun::R_EXP) param_gaussian_kernel.append_child(param_gaussian_kernel_width) ds_kernel=Modshogun::DistantSegmentsKernel.new param_ds_kernel=Modshogun::ModelSelectionParameters.new('kernel', ds_kernel) root.append_child(param_ds_kernel) param_ds_kernel_delta=Modshogun::ModelSelectionParameters.new('delta') param_ds_kernel_delta.build_values(1, 2, Modshogun::R_EXP) param_ds_kernel.append_child(param_ds_kernel_delta) param_ds_kernel_theta=Modshogun::ModelSelectionParameters.new('theta') param_ds_kernel_theta.build_values(1, 2, Modshogun::R_EXP) param_ds_kernel.append_child(param_ds_kernel_theta) #root.print_tree() combinations=root.get_combinations() #combinations.get_num_elements.times do |i| # combinations.get_element(i).print_tree() #end return end if __FILE__ == $0 puts 'ParameterTree' pp modelselection_parameter_tree_modular() end
# In this example a kernelized version of ridge regression (KRR) is trained on a # real-valued data set. The KRR is trained with regularization parameter tau=1e-6 # and a gaussian kernel with width=0.8. The labels of both the train and the test # data can be fetched via krr.classify().get_labels(). require 'modshogun' require 'pp' require 'load' ########################################################################### # kernel ridge regression ########################################################################### traindat = LoadMatrix.load_numbers('../data/fm_train_real.dat') testdat = LoadMatrix.load_numbers('../data/fm_test_real.dat') label_traindat = LoadMatrix.load_labels('../data/label_train_twoclass.dat') parameter_list = [[traindat,testdat,label_traindat,0.8,1e-6],[traindat,testdat,label_traindat,0.9,1e-7]] def regression_krr_modular(fm_train=traindat,fm_test=testdat,label_train=label_traindat,width=0.8,tau=1e-6) feats_train=Modshogun::RealFeatures.new feats_train.set_feature_matrix(fm_train) feats_test=Modshogun::RealFeatures.new feats_test.set_feature_matrix(fm_test) kernel=Modshogun::GaussianKernel.new(feats_train, feats_train, width) labels=Modshogun::RegressionLabels.new(label_train) krr=Modshogun::KernelRidgeRegression.new(tau, kernel, labels) krr.train(feats_train) kernel.init(feats_train, feats_test) out = krr.apply().get_labels() return out,kernel,krr end # equivialent shorter version ## probably dosn't work yet def krr_short() puts 'KRR_short' width=0.8; tau=1e-6 # *** krr=KernelRidgeRegression(tau, GaussianKernel(0, width), RegressionLabels(label_train)) krr=Modshogun::KernelRidgeRegression.new(tau, GaussianKernel(0, width), RegressionLabels(label_train)) #krr.set_features(tau, GaussianKernel(0, width), RegressionLabels(label_train)) krr.train(RealFeatures(fm_train)) out = Modshogun::RegressionLabels.obtain_from_generic(krr.apply(RealFeatures(fm_test)).get_labels()) return krr,out end if __FILE__ == $0 puts 'KernelRidgeRegression' pp regression_krr_modular(*parameter_list[0]) end
# In this example a support vector regression algorithm is trained on a # real-valued toy data set. The underlying library used for the SVR training is # LIBSVM. The SVR is trained with regularization parameter C=1 and a gaussian # kernel with width=2.1. The labels of both the train and the test data are # fetched via svr.classify().get_labels(). # # For more details on LIBSVM solver see http://www.csie.ntu.edu.tw/~cjlin/libsvm/ . require 'modshogun' require 'pp' require 'load' traindat = LoadMatrix.load_numbers('../data/fm_train_real.dat') testdat = LoadMatrix.load_numbers('../data/fm_test_real.dat') label_traindat = LoadMatrix.load_labels('../data/label_train_twoclass.dat') parameter_list = [[traindat,testdat,label_traindat,2.1,1,1e-5,1e-2], [traindat,testdat,label_traindat,2.1,1,1e-5,1e-2]] def regression_libsvr_modular(fm_train=traindat,fm_test=testdat,label_train=label_traindat,width=2.1,c=1,epsilon=1e-5,tube_epsilon=1e-2) feats_train=Modshogun::RealFeatures.new feats_train.set_feature_matrix(fm_train) feats_test=Modshogun::RealFeatures.new feats_test.set_feature_matrix(fm_test) kernel=Modshogun::GaussianKernel.new(feats_train, feats_train, width) labels=Modshogun::RegressionLabels.new(label_train) svr=Modshogun::LibSVR.new(c, tube_epsilon, kernel, labels) svr.set_epsilon(epsilon) svr.train() kernel.init(feats_train, feats_test) out1=svr.apply().get_labels() out2=svr.apply(feats_test).get_labels() return out1,out2,kernel end if __FILE__ == $0 puts 'LibSVR' pp regression_libsvr_modular(*parameter_list[0]) end