Skip to content

Commit

Permalink
Merge branch 'master' of git://github.com/puffin444/shogun
Browse files Browse the repository at this point in the history
  • Loading branch information
lisitsyn committed Jul 7, 2012
2 parents 05e12d2 + 3711463 commit 9d82c0b
Show file tree
Hide file tree
Showing 30 changed files with 1,176 additions and 345 deletions.
20 changes: 12 additions & 8 deletions examples/undocumented/libshogun/library_hash.cpp
Expand Up @@ -9,19 +9,23 @@ int main(int argc, char** argv)
init_shogun();
uint8_t array[4]={0,1,2,3};

printf("hash(0)=%0x\n", CHash::MurmurHash2(&array[0], 1, 0xDEADBEAF));
printf("hash(1)=%0x\n", CHash::MurmurHash2(&array[1], 1, 0xDEADBEAF));
printf("hash(2)=%0x\n", CHash::MurmurHash2(&array[0], 2, 0xDEADBEAF));
printf("hash(3)=%0x\n", CHash::MurmurHash2(&array[0], 4, 0xDEADBEAF));
printf("hash(0)=%0x\n", CHash::MurmurHash3(&array[0], 1, 0xDEADBEAF));
printf("hash(1)=%0x\n", CHash::MurmurHash3(&array[1], 1, 0xDEADBEAF));
printf("hash(2)=%0x\n", CHash::MurmurHash3(&array[0], 2, 0xDEADBEAF));
printf("hash(3)=%0x\n", CHash::MurmurHash3(&array[0], 4, 0xDEADBEAF));

uint32_t h=CHash::IncrementalMurmurHash2(array[0], 0xDEADBEAF);
uint32_t h = 0xDEADBEAF;
uint32_t carry = 0;
CHash::IncrementalMurmurHash3(&h, &carry, &array[0], 1);
printf("inc_hash(0)=%0x\n", h);
h=CHash::IncrementalMurmurHash2(array[1], h);
CHash::IncrementalMurmurHash3(&h, &carry, &array[1], 1);
printf("inc_hash(1)=%0x\n", h);
h=CHash::IncrementalMurmurHash2(array[2], h);
CHash::IncrementalMurmurHash3(&h, &carry, &array[2], 1);
printf("inc_hash(2)=%0x\n", h);
h=CHash::IncrementalMurmurHash2(array[3], h);
CHash::IncrementalMurmurHash3(&h, &carry, &array[3], 1);
printf("inc_hash(3)=%0x\n", h);
h = CHash::FinalizeIncrementalMurmurHash3(h, carry, 4);
printf("Final inc_hash(3)=%0x\n", h);
exit_shogun();
return 0;
}
Expand Down
66 changes: 42 additions & 24 deletions examples/undocumented/libshogun/regression_gaussian_process.cpp
Expand Up @@ -38,7 +38,8 @@ int main(int argc, char **argv)
int32_t dim_vectors=3;

/* create some data and labels */
SGMatrix<float64_t> matrix= SGMatrix<float64_t>(dim_vectors, num_vectors);
SGMatrix<float64_t> matrix =
SGMatrix<float64_t>(dim_vectors, num_vectors);

matrix[0] = -1;
matrix[1] = -1;
Expand All @@ -53,7 +54,9 @@ int main(int argc, char **argv)
matrix[10] = 2;
matrix[11] = 1;

SGMatrix<float64_t> matrix2= SGMatrix<float64_t>(dim_vectors, num_vectors);
SGMatrix<float64_t> matrix2 =
SGMatrix<float64_t>(dim_vectors, num_vectors);

for (int32_t i=0; i<num_vectors*dim_vectors; i++)
matrix2[i]=i*sin(i)*.96;

Expand Down Expand Up @@ -85,34 +88,43 @@ int main(int argc, char **argv)
CZeroMean* mean = new CZeroMean();
CGaussianLikelihood* lik = new CGaussianLikelihood();
lik->set_sigma(0.01);
CExactInferenceMethod* inf = new CExactInferenceMethod(test_kernel, features, mean, labels, lik);
SG_REF(inf);

CGaussianProcessRegression* gp = new CGaussianProcessRegression(inf, features, labels);
CExactInferenceMethod* inf =
new CExactInferenceMethod(test_kernel, features, mean, labels, lik);


SG_REF(inf);

CGaussianProcessRegression* gp =
new CGaussianProcessRegression(inf, features, labels);

CModelSelectionParameters* root=new CModelSelectionParameters();

CModelSelectionParameters* c1=new CModelSelectionParameters("inference_method", inf);
CModelSelectionParameters* c1 =
new CModelSelectionParameters("inference_method", inf);
root->append_child(c1);

CModelSelectionParameters* c2=new CModelSelectionParameters("scale");
CModelSelectionParameters* c2 = new CModelSelectionParameters("scale");
c1 ->append_child(c2);
c2->build_values(0.001, 4.0, R_LINEAR);
c2->build_values(0.01, 4.0, R_LINEAR);


CModelSelectionParameters* c3=new CModelSelectionParameters("likelihood_model", lik);
CModelSelectionParameters* c3 =
new CModelSelectionParameters("likelihood_model", lik);
c1->append_child(c3);

CModelSelectionParameters* c4=new CModelSelectionParameters("sigma");
c3->append_child(c4);
c4->build_values(0.001, 4.0, R_LINEAR);

CModelSelectionParameters* c5=new CModelSelectionParameters("kernel", test_kernel);
CModelSelectionParameters* c5 =
new CModelSelectionParameters("kernel", test_kernel);
c1->append_child(c5);

CModelSelectionParameters* c6=new CModelSelectionParameters("width");
CModelSelectionParameters* c6 =
new CModelSelectionParameters("width");
c5->append_child(c6);
c6->build_values(0.01, 4.0, R_LINEAR);
c6->build_values(0.001, 4.0, R_LINEAR);

/* cross validation class for evaluation in model selection */
SG_REF(gp);
Expand All @@ -130,12 +142,13 @@ int main(int argc, char **argv)

/* handles all of the above structures in memory */
CGradientModelSelection* grad_search=new CGradientModelSelection(
root, grad);
root, grad);

/* set autolocking to false to get rid of warnings */
grad->set_autolock(false);

CParameterCombination* best_combination=grad_search->select_model(true);
grad_search->set_max_evaluations(5);

if (best_combination)
{
Expand All @@ -156,22 +169,27 @@ int main(int argc, char **argv)
SGVector<float64_t> labe = labels->get_labels();
SGVector<float64_t> diagonal = inf->get_diagonal_vector();
SGMatrix<float64_t> cholesky = inf->get_cholesky();
SGVector<float64_t> covariance = gp->getCovarianceVector(features);
CRegressionLabels* predictions = gp->apply_regression(features);

SGVector<float64_t>::display_vector(alpha.vector, alpha.vlen, "Alpha Vector");
SGVector<float64_t>::display_vector(labe.vector, labe.vlen, "Labels");
SGVector<float64_t>::display_vector(diagonal.vector, diagonal.vlen, "sW Matrix");
SGVector<float64_t>::display_vector(covariance.vector, covariance.vlen, "Predicted Variances");
SGVector<float64_t>::display_vector(predictions->get_labels().vector, predictions->get_labels().vlen, "Mean Predictions");
SGMatrix<float64_t>::display_matrix(cholesky.matrix, cholesky.num_rows, cholesky.num_cols, "Cholesky Matrix L");
SGMatrix<float64_t>::display_matrix(matrix.matrix, matrix.num_rows, matrix.num_cols, "Training Features");
SGMatrix<float64_t>::display_matrix(matrix2.matrix, matrix2.num_rows, matrix2.num_cols, "Testing Features");
gp->set_return_type(CGaussianProcessRegression::GP_RETURN_COV);

CRegressionLabels* covariance = gp->apply_regression(features);

gp->set_return_type(CGaussianProcessRegression::GP_RETURN_MEANS);
CRegressionLabels* predictions = gp->apply_regression();

alpha.display_vector("Alpha Vector");
labe.display_vector("Labels");
diagonal.display_vector("sW Matrix");
covariance->get_labels().display_vector("Predicted Variances");
predictions->get_labels().display_vector("Mean Predictions");
cholesky.display_matrix("Cholesky Matrix L");
matrix.display_matrix("Training Features");
matrix2.display_matrix("Testing Features");

/*free memory*/
SG_UNREF(features);
SG_UNREF(features2);
SG_UNREF(predictions);
SG_UNREF(covariance);
SG_UNREF(labels);
SG_UNREF(inf);
SG_UNREF(gp);
Expand Down
Expand Up @@ -6,26 +6,55 @@
from shogun.Features import *
from shogun.Classifier import *
from shogun.Kernel import *
from shogun.Regression import *

num=100
dist=1
width=2.1
C=1

traindata_real=concatenate((randn(2,num)-dist, randn(2,num)+dist), axis=1)
traindata_real=concatenate((randn(2,num)-dist, randn(2,num)+dist), axis=1);
testdata_real=concatenate((randn(2,num)-dist, randn(2,num)+dist), axis=1);

trainlab=concatenate((-ones(num), ones(num)));
testlab=concatenate((-ones(num), ones(num)));
trainlab = concatenate((-ones(num), ones(num)));
labels=RegressionLabels(trainlab);

feats_train=RealFeatures(traindata_real);
feats_test=RealFeatures(testdata_real);
kernel=GaussianKernel(feats_train, feats_train, width);
zmean = ZeroMean();
lik = GaussianLikelihood();
inf = ExactInferenceMethod(kernel, feats_train, zmean, labels, lik);
gp = GaussianProcessRegression(inf, feats_train, labels);

alpha = inf.get_alpha();
diagonal = inf.get_diagonal_vector();
cholesky = inf.get_cholesky();
gp.set_return_type(GaussianProcessRegression.GP_RETURN_COV);

covariance = gp.apply_regression(feats_test);

gp.set_return_type(GaussianProcessRegression.GP_RETURN_MEANS);

predictions = gp.apply_regression();

print "Alpha Vector";
print(alpha);

print "Labels";
print(labels.get_labels())

print "sW Matrix";
print(diagonal)

print "Covariances";
print(covariance.get_labels())

print "Mean Predictions";
print(predictions.get_labels())

print "Cholesky Matrix L";
print(cholesky)



labels=BinaryLabels(trainlab);
#gp=GaussianProcessRegression(1.0, feats_train, labels);
#gp.set_kernel(kernel);
#gp.train(feats_train);
#out=gp.apply_regression(feats_test).get_labels();
#testerr=mean(sign(out)!=testlab)
#print(testerr)
15 changes: 15 additions & 0 deletions src/interfaces/modular/Evaluation.i
Expand Up @@ -8,6 +8,11 @@
* Copyright (C) 2009 Fraunhofer Institute FIRST and Max-Planck-Society
*/

/* These functions return new Objects */
%newobject CGradientEvaluation::evaluate();
%newobject CCrossValidation::evaluate();


/* Remove C Prefix */
%rename(Evaluation) CEvaluation;
%rename(BinaryClassEvaluation) CBinaryClassEvaluation;
Expand All @@ -34,6 +39,12 @@
%rename(SplittingStrategy) CSplittingStrategy;
%rename(StratifiedCrossValidationSplitting) CStratifiedCrossValidationSplitting;
%rename(CrossValidationSplitting) CCrossValidationSplitting;
%rename(DifferentiableFunction) CDifferentiableFunction;
%rename(GradientCriterion) CGradientCriterion;
%rename(GradientEvaluation) CGradientEvaluation;




/* Include Class Headers to make them visible from within the target language */
%include <shogun/evaluation/EvaluationResult.h>
Expand All @@ -52,5 +63,9 @@
%include <shogun/evaluation/MachineEvaluation.h>
%include <shogun/evaluation/CrossValidation.h>
%include <shogun/evaluation/SplittingStrategy.h>
%include <shogun/evaluation/DifferentiableFunction.h>
%include <shogun/evaluation/GradientCriterion.h>
%include <shogun/evaluation/GradientEvaluation.h>
%include <shogun/evaluation/GradientResult.h>
%include <shogun/evaluation/StratifiedCrossValidationSplitting.h>
%include <shogun/evaluation/CrossValidationSplitting.h>
4 changes: 4 additions & 0 deletions src/interfaces/modular/Evaluation_includes.i
Expand Up @@ -14,6 +14,10 @@
#include <shogun/evaluation/PRCEvaluation.h>
#include <shogun/evaluation/MachineEvaluation.h>
#include <shogun/evaluation/CrossValidation.h>
#include <shogun/evaluation/DifferentiableFunction.h>
#include <shogun/evaluation/GradientCriterion.h>
#include <shogun/evaluation/GradientEvaluation.h>
#include <shogun/evaluation/GradientResult.h>
#include <shogun/evaluation/SplittingStrategy.h>
#include <shogun/evaluation/StratifiedCrossValidationSplitting.h>
#include <shogun/evaluation/CrossValidationSplitting.h>
Expand Down
5 changes: 5 additions & 0 deletions src/interfaces/modular/ModelSelection.i
Expand Up @@ -12,13 +12,17 @@ SERIALIZABLE_DUMMY(shogun::CrossValidationResult);

/* These functions return new Objects */
%newobject CGridSearchModelSelection::select_model();
%newobject CGradientModelSelection::select_model();
%newobject CParameterCombination::copy_tree();
%newobject CParameterCombination::leaf_sets_multiplication();
%newobject CModelSelectionParameters::get_combinations();
%newobject CModelSelectionParameters::get_single_combination();

/* what about parameter_set_multiplication returns new DynArray<Parameter*>? */

/* Remove C Prefix */
%rename(GridSearchModelSelection) CGridSearchModelSelection;
%rename(GradientModelSelection) CGradientModelSelection;
%rename(ModelSelectionBase) CModelSelection;
%rename(ModelSelectionParameters) CModelSelectionParameters;
%rename(ParameterCombination) CParameterCombination;
Expand All @@ -27,3 +31,4 @@ SERIALIZABLE_DUMMY(shogun::CrossValidationResult);
%include <shogun/modelselection/GridSearchModelSelection.h>
%include <shogun/modelselection/ParameterCombination.h>
%include <shogun/modelselection/ModelSelectionParameters.h>
%include <shogun/modelselection/GradientModelSelection.h>
1 change: 1 addition & 0 deletions src/interfaces/modular/ModelSelection_includes.i
Expand Up @@ -2,5 +2,6 @@
#include <shogun/modelselection/ModelSelection.h>
#include <shogun/modelselection/ModelSelectionParameters.h>
#include <shogun/modelselection/GridSearchModelSelection.h>
#include <shogun/modelselection/GradientModelSelection.h>
#include <shogun/modelselection/ParameterCombination.h>
%}
9 changes: 9 additions & 0 deletions src/interfaces/modular/Regression.i
Expand Up @@ -13,6 +13,9 @@
%rename(KernelRidgeRegression) CKernelRidgeRegression;
%rename(LinearRidgeRegression) CLinearRidgeRegression;
%rename(LeastSquaresRegression) CLeastSquaresRegression;
%rename(ExactInferenceMethod) CExactInferenceMethod;
%rename(GaussianLikelihood) CGaussianLikelihood;
%rename(ZeroMean) CZeroMean;
%rename(GaussianProcessRegression) CGaussianProcessRegression;
%rename(LeastAngleRegression) CLeastAngleRegression;
%rename(LibSVR) CLibSVR;
Expand All @@ -24,10 +27,16 @@
#endif //USE_SVMLIGHT

/* Include Class Headers to make them visible from within the target language */
%include <shogun/regression/gp/LikelihoodModel.h>
%include <shogun/regression/gp/GaussianLikelihood.h>
%include <shogun/regression/gp/MeanFunction.h>
%include <shogun/regression/gp/ZeroMean.h>
%include <shogun/regression/Regression.h>
%include <shogun/regression/KernelRidgeRegression.h>
%include <shogun/regression/LinearRidgeRegression.h>
%include <shogun/regression/LeastSquaresRegression.h>
%include <shogun/regression/gp/InferenceMethod.h>
%include <shogun/regression/gp/ExactInferenceMethod.h>
%include <shogun/regression/GaussianProcessRegression.h>
%include <shogun/regression/LeastAngleRegression.h>
%include <shogun/regression/svr/LibSVR.h>
Expand Down
6 changes: 6 additions & 0 deletions src/interfaces/modular/Regression_includes.i
Expand Up @@ -5,6 +5,12 @@
#include <shogun/regression/KernelRidgeRegression.h>
#include <shogun/regression/LinearRidgeRegression.h>
#include <shogun/regression/LeastSquaresRegression.h>
#include <shogun/regression/gp/LikelihoodModel.h>
#include <shogun/regression/gp/GaussianLikelihood.h>
#include <shogun/regression/gp/MeanFunction.h>
#include <shogun/regression/gp/ZeroMean.h>
#include <shogun/regression/gp/InferenceMethod.h>
#include <shogun/regression/gp/ExactInferenceMethod.h>
#include <shogun/regression/GaussianProcessRegression.h>
#include <shogun/regression/LeastAngleRegression.h>
#include <shogun/classifier/svm/SVM.h>
Expand Down

0 comments on commit 9d82c0b

Please sign in to comment.