diff options
| author | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2017-02-17 19:02:52 -0500 |
|---|---|---|
| committer | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2017-02-17 19:02:52 -0500 |
| commit | 3a30e992cf022f4ec3c76506c070e59d093951d4 (patch) | |
| tree | fe14713d50876c1d37f1acec40b9a77875d2bba3 /include | |
| parent | minor code clarification (diff) | |
| download | gensvm-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.h | 21 | ||||
| -rw-r--r-- | include/gensvm_kernel.h | 11 | ||||
| -rw-r--r-- | include/gensvm_task.h | 12 |
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; |
