Skip to content

Commit

Permalink
Merge pull request #320 from serialhex/master
Browse files Browse the repository at this point in the history
Many more ruby examples
  • Loading branch information
Soeren Sonnenburg committed Aug 30, 2011
2 parents faf1d9c + a42f60d commit c52988d
Show file tree
Hide file tree
Showing 20 changed files with 624 additions and 144 deletions.
Expand Up @@ -14,7 +14,8 @@
'CGACGTAGTCGTAGCCCCA',
'CAAAAAAAAAAAAAAAATA',
'CGACGGGGGGGGGGGCGTA']
label_traindna = numpy.array(5*[-1.0] + 5*[1.0])
label_traindna = NArray.to_na([-1.0]*5 + [1.0]*5)

testdna = ['AGCACGTACGTAGCTCGAT',
'AGACGTAGTCGTAGTCGTA',
'CAACGGGGGGGGGGTCGTA',
Expand All @@ -25,7 +26,7 @@
'CGACGTAGTCCCAGCCCCA',
'CAAAAAAAAAAAACCAATA',
'CGACGGCCGGGGGGGCGTA']
label_testdna = numpy.array(5*[-1.0] + 5*[1.0])
label_testdna = NArray.to_na([-1.0]*5 + [1.0]*5)


traindna2 = ['AGACAGTCAGTCGATAGCT',
Expand All @@ -38,7 +39,8 @@
'AGCAGTCGTAGTCGAAAAC',
'ACCCCCCCCCCCCCCCCTC',
'AGCAGGGGGGGGGGGAGTC']
label_traindna2 = numpy.array(5*[-1.0] + 5*[1.0])
label_traindna2 = NArray.to_na([-1.0]*5 + [1.0]*5)

testdna2 = ['CGACAGTCAGTCGATAGCT',
'CGCAGTCGTAGTCGTAGTC',
'ACCAGGGGGGGGGGTAGTC',
Expand All @@ -49,39 +51,36 @@
'AGCAGTCGTAAACGAAAAC',
'ACCCCCCCCCCCCAACCTC',
'AGCAGGAAGGGGGGGAGTC']
label_testdna2 = numpy.array(5*[-1.0] + 5*[1.0])
label_testdna2 = NArray.to_na([-1.0]*5 + [1.0]*5)

parameter_list = [[traindna,testdna,label_traindna,label_testdna,traindna2,label_traindna2, \
testdna2,label_testdna2,1,3],[traindna,testdna,label_traindna,label_testdna,traindna2,label_traindna2, \
parameter_list = [[traindna,testdna,label_traindna,label_testdna,traindna2,label_traindna2,
testdna2,label_testdna2,1,3],[traindna,testdna,label_traindna,label_testdna,traindna2,label_traindna2,
testdna2,label_testdna2,2,5]]

def classifier_domainadaptationsvm_modular(fm_train_dna=traindna,fm_test_dna=testdna, \
label_train_dna=label_traindna, \
label_test_dna=label_testdna,fm_train_dna2=traindna2,fm_test_dna2=testdna2, \
label_train_dna2=label_traindna2,label_test_dna2=label_testdna2,C=1,degree=3):
def classifier_domainadaptationsvm_modular(fm_train_dna=traindna, fm_test_dna=testdna, label_train_dna=label_traindna, label_test_dna=label_testdna, fm_train_dna2=traindna2,fm_test_dna2=testdna2, label_train_dna2=label_traindna2, label_test_dna2=label_testdna2, c=1, degree=3)



feats_train = StringCharFeatures(fm_train_dna, DNA)
feats_test = StringCharFeatures(fm_test_dna, DNA)
kernel = WeightedDegreeStringKernel(feats_train, feats_train, degree)
labels = Labels(label_train_dna)
svm = SVMLight(C, kernel, labels)

feats_train = Modshogun::StringCharFeatures.new(fm_train_dna, Modshogun::DNA)
feats_test = Modshogun::StringCharFeatures.new(fm_test_dna, Modshogun::DNA)
kernel = Modshogun::WeightedDegreeStringKernel.new(feats_train, feats_train, degree)
labels = Modshogun::Labels.new(label_train_dna)
svm = Modshogun::SVMLight.new(c, kernel, labels)
svm.train()
#svm.io.set_loglevel(MSG_DEBUG)

#####################################

#print "obtaining DA SVM from previously trained SVM"

feats_train2 = StringCharFeatures(fm_train_dna, DNA)
feats_test2 = StringCharFeatures(fm_test_dna, DNA)
kernel2 = WeightedDegreeStringKernel(feats_train, feats_train, degree)
labels2 = Labels(label_train_dna)
feats_train2 = Modshogun::StringCharFeatures.new(fm_train_dna, Modshogun::DNA)
feats_test2 = Modshogun::StringCharFeatures.new(fm_test_dna, Modshogun::DNA)
kernel2 = Modshogun::WeightedDegreeStringKernel.new(feats_train, feats_train, degree)
labels2 = Modshogun::Labels.new(label_train_dna)

# we regularize against the previously obtained solution
dasvm = DomainAdaptationSVM(C, kernel2, labels2, svm, 1.0)
dasvm = Modshogun::DomainAdaptationSVM.new(c, kernel2, labels2, svm, 1.0)
dasvm.train()

out = dasvm.apply(feats_test2).get_labels()
Expand Down
Expand Up @@ -4,20 +4,20 @@

N = 100

random.seed(17)
ground_truth = random.randn(N)
predicted = random.randn(N)
NArray.srand(17)
ground_truth = NArray.float(N).randomn
predicted = NArray.float(N).randomn

parameter_list = [[ground_truth,predicted]]

def evaluation_meansquarederror_modular(ground_truth, predicted):
from shogun.Features import Labels
from shogun.Evaluation import MeanSquaredError

ground_truth_labels = Labels(ground_truth)
predicted_labels = Labels(predicted)
ground_truth_labels = Modshogun::Labels.new(ground_truth)
predicted_labels = Modshogun::Labels.new(predicted)

evaluator = MeanSquaredError()
evaluator = Modshogun::MeanSquaredError.new
mse = evaluator.evaluate(predicted_labels,ground_truth_labels)

return mse
Expand Down
41 changes: 23 additions & 18 deletions examples/undocumented/python_modular/mkl_multiclass_modular.py
Expand Up @@ -8,54 +8,59 @@
[ fm_train_real, fm_test_real, label_train_multiclass, 1.2, 1.2, 1e-5, 1, 0.001, 1.5],
[ fm_train_real, fm_test_real, label_train_multiclass, 5, 1.2, 1e-2, 1, 0.001, 2]]

def mkl_multiclass_modular(fm_train_real, fm_test_real, label_train_multiclass,
width, C, epsilon, num_threads, mkl_epsilon, mkl_norm):
def mkl_multiclass_modular(fm_train_real, fm_test_real, label_train_multiclass, width, c, epsilon, num_threads, mkl_epsilon, mkl_norm)

from shogun.Features import CombinedFeatures, RealFeatures, Labels
from shogun.Kernel import CombinedKernel, GaussianKernel, LinearKernel,PolyKernel
from shogun.Classifier import MKLMultiClass

kernel = CombinedKernel()
feats_train = CombinedFeatures()
feats_test = CombinedFeatures()
kernel = Modshogun::CombinedKernel.new
feats_train = Modshogun::CombinedFeatures.new
feats_test = Modshogun::CombinedFeatures.new

subkfeats_train = RealFeatures(fm_train_real)
subkfeats_test = RealFeatures(fm_test_real)
subkernel = GaussianKernel(10, width)
subkfeats_train = Modshogun::RealFeatures.new
subkfeats_train.set_feature_matrix(fm_train_real)
subkfeats_test = Modshogun::RealFeatures.new
subkfeats_test.set_feature_matrix(fm_test_real)
subkernel = Modshogun::GaussianKernel.new(10, width)
feats_train.append_feature_obj(subkfeats_train)
feats_test.append_feature_obj(subkfeats_test)
kernel.append_kernel(subkernel)

subkfeats_train = RealFeatures(fm_train_real)
subkfeats_test = RealFeatures(fm_test_real)
subkernel = LinearKernel()
subkfeats_train = Modshogun::RealFeatures.new
subkfeats_train.set_feature_matrix(fm_train_real)
subkfeats_test = Modshogun::RealFeatures.new
subkfeats_test.set_feature_matrix(fm_test_real)
subkernel = Modshogun::LinearKernel.new
feats_train.append_feature_obj(subkfeats_train)
feats_test.append_feature_obj(subkfeats_test)
kernel.append_kernel(subkernel)

subkfeats_train = RealFeatures(fm_train_real)
subkfeats_test = RealFeatures(fm_test_real)
subkernel = PolyKernel(10,2)
subkfeats_train = Modshogun::RealFeatures.new
subkfeats_train.set_feature_matrix(fm_train_real)
subkfeats_test = Modshogun::RealFeatures.new
subkfeats_test.set_feature_matrix(fm_test_real)
subkernel = Modshogun::PolyKernel.new(10,2)
feats_train.append_feature_obj(subkfeats_train)
feats_test.append_feature_obj(subkfeats_test)
kernel.append_kernel(subkernel)

kernel.init(feats_train, feats_train)

labels = Labels(label_train_multiclass)
labels = Modshogun::Labels.new(label_train_multiclass)

mkl = MKLMultiClass(C, kernel, labels)
mkl = Modshogun::MKLMultiClass.new(c, kernel, labels)

mkl.set_epsilon(epsilon);
mkl.parallel.set_num_threads(num_threads)
mkl.set_mkl_epsilon(mkl_epsilon)
mkl.set_mkl_norm(mkl_norm)

mkl.train()
mkl.train

kernel.init(feats_train, feats_test)

out = mkl.apply().get_labels()
out = mkl.apply.get_labels()
return out

if __name__ == '__main__':
Expand Down
@@ -0,0 +1,36 @@
# this was trancekoded by the awesome trancekoder
# ...and fixifikated by the awesum fixifikator
require 'modshogun'
require 'pp'

parameter_list = [[1,7],[2,8]]

def classifier_custom_kernel_modular(c=1,dim=7)

Modshogun::Math.init_random(c)

lab=sign(2*rand(dim) - 1)
data=rand(dim, dim)
symdata=data*data.T + diag(ones(dim))

# *** kernel=CustomKernel()
kernel=Modshogun::CustomKernel.new
kernel.set_features()
kernel.set_full_kernel_matrix_from_full(data)
# *** labels=Labels(lab)
labels=Modshogun::Labels.new
labels.set_features(lab)
# *** svm=LibSVM(c, kernel, labels)
svm=Modshogun::LibSVM.new
svm.set_features(c, kernel, labels)
svm.train()
predictions =svm.apply()
out=svm.apply().get_labels()
return svm,out

end

if __FILE__ == $0
puts 'custom_kernel'
classifier_custom_kernel_modular(*parameter_list[0])
end
@@ -0,0 +1,27 @@
require 'modshogun'
require 'pp'

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::EuclidianDistance.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
28 changes: 28 additions & 0 deletions examples/undocumented/ruby_modular/distance_braycurtis_modular.rb
@@ -0,0 +1,28 @@
require 'modshogun'
require 'pp'

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
28 changes: 28 additions & 0 deletions examples/undocumented/ruby_modular/distance_canberra_modular.rb
@@ -0,0 +1,28 @@
require 'modshogun'
require 'pp'

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
@@ -0,0 +1,40 @@
require 'modshogun'
require 'pp'

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
@@ -0,0 +1,16 @@
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

0 comments on commit c52988d

Please sign in to comment.