aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorGertjan van den Burg <gertjanvandenburg@gmail.com>2017-02-17 19:02:52 -0500
committerGertjan van den Burg <gertjanvandenburg@gmail.com>2017-02-17 19:02:52 -0500
commit3a30e992cf022f4ec3c76506c070e59d093951d4 (patch)
treefe14713d50876c1d37f1acec40b9a77875d2bba3 /include
parentminor code clarification (diff)
downloadgensvm-3a30e992cf022f4ec3c76506c070e59d093951d4.tar.gz
gensvm-3a30e992cf022f4ec3c76506c070e59d093951d4.zip
Remove kernelparam array in favour of explicit kernel parameters
This simplifies a lot of the code and will make it easier to link to other languages.
Diffstat (limited to 'include')
-rw-r--r--include/gensvm_base.h21
-rw-r--r--include/gensvm_kernel.h11
-rw-r--r--include/gensvm_task.h12
3 files changed, 29 insertions, 15 deletions
diff --git a/include/gensvm_base.h b/include/gensvm_base.h
index 999bf2f..dee1d80 100644
--- a/include/gensvm_base.h
+++ b/include/gensvm_base.h
@@ -49,7 +49,9 @@
* @param J pointer to regularization vector
* @param Sigma eigenvalues from the reduced eigendecomposition
* @param kerneltype kerneltype used in GenData::Z
- * @param *kernelparam kernel parameters used in GenData::Z
+ * @param gamma kernel parameter for RBF, poly, and sigmoid
+ * @param coef kernel parameter for poly and sigmoid
+ * @param degree kernel parameter for poly
*
*/
struct GenData {
@@ -75,9 +77,12 @@ struct GenData {
KernelType kerneltype;
///< kerneltype used to generate the kernel corresponding to the data
///< in Z
- double *kernelparam;
- ///< kernelparameters used to generate the kernel corresponding to the
- ///< data in Z
+ double gamma;
+ ///< kernel parameter for RBF, poly, and sigmoid
+ double coef;
+ ///< kernel parameter for poly and sigmoid
+ double degree;
+ ///< kernel parameter for poly
};
/**
@@ -101,6 +106,12 @@ struct GenModel {
///< parameter for the Huber hinge function
double lambda;
///< regularization parameter in the loss function
+ double gamma;
+ ///< kernel parameter for RBF, poly, and sigmoid
+ double coef;
+ ///< kernel parameter for poly and sigmoid
+ double degree;
+ ///< kernel parameter for poly
double *V;
///< augmented weight matrix
double *Vbar;
@@ -122,8 +133,6 @@ struct GenModel {
///< filename of the data
KernelType kerneltype;
///< type of kernel used in the model
- double *kernelparam;
- ///< array of kernel parameters, size depends on kernel type
double kernel_eigen_cutoff;
///< cutoff value for the ratio of eigenvalues in the reduced
//eigendecomposition.
diff --git a/include/gensvm_kernel.h b/include/gensvm_kernel.h
index 1d4f0d1..bb3e100 100644
--- a/include/gensvm_kernel.h
+++ b/include/gensvm_kernel.h
@@ -51,12 +51,11 @@ void gensvm_kernel_trainfactor(struct GenData *data, double *P, double *Sigma,
long r);
void gensvm_kernel_testfactor(struct GenData *testdata,
struct GenData *traindata, double *K2);
-double gensvm_kernel_dot_rbf(double *x1, double *x2, double *kernelparam,
- long n);
-double gensvm_kernel_dot_poly(double *x1, double *x2, double *kernelparam,
- long n);
-double gensvm_kernel_dot_sigmoid(double *x1, double *x2, double *kernelparam,
- long n);
+double gensvm_kernel_dot_rbf(double *x1, double *x2, long n, double gamma);
+double gensvm_kernel_dot_poly(double *x1, double *x2, long n, double gamma,
+ double coef, double degree);
+double gensvm_kernel_dot_sigmoid(double *x1, double *x2, long n, double gamma,
+ double coef);
int dsyevx(char JOBZ, char RANGE, char UPLO, int N, double *A, int LDA,
double VL, double VU, int IL, int IU, double ABSTOL,
int *M, double *W, double *Z, int LDZ, double *WORK, int LWORK,
diff --git a/include/gensvm_task.h b/include/gensvm_task.h
index 03fcbb5..a791262 100644
--- a/include/gensvm_task.h
+++ b/include/gensvm_task.h
@@ -45,7 +45,9 @@
* @param lambda parameter for the GenModel
* @param epsilon parameter for the GenModel
* @param kerneltype parameter for the GenModel
- * @param kernelparam kernel parameters for the GenModel
+ * @param gamma parameter for the GenModel
+ * @param coef parameter for the GenModel
+ * @param degree parameter for the GenModel
* @param train_data pointer to the training data
* @param test_data pointer to the test data (if any)
* @param performance performance after cross validation
@@ -67,8 +69,12 @@ struct GenTask {
///< lambda parameter for the GenModel
double epsilon;
///< epsilon parameter for the GenModel
- double *kernelparam;
- ///< kernelparam parameters for the GenModel
+ double gamma;
+ ///< gamma parameter for the GenModel
+ double coef;
+ ///< coef parameter for the GenModel
+ double degree;
+ ///< degree parameter for the GenModel
struct GenData *train_data;
///< pointer to the training data
struct GenData *test_data;