diff options
| author | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2017-10-07 15:35:44 +0200 |
|---|---|---|
| committer | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2017-10-07 15:35:44 +0200 |
| commit | 3e269c1c6369af3ffbae031d096c29cb9f0a1e76 (patch) | |
| tree | 7c3e09162e65e42bb151b2fb224ced5e184e7f2e /gensvm | |
| parent | update submodule (diff) | |
| download | pygensvm-3e269c1c6369af3ffbae031d096c29cb9f0a1e76.tar.gz pygensvm-3e269c1c6369af3ffbae031d096c29cb9f0a1e76.zip | |
rearrange and update setup.py
Diffstat (limited to 'gensvm')
| -rw-r--r-- | gensvm/pyx_gensvm.pxd | 91 | ||||
| -rw-r--r-- | gensvm/pyx_gensvm.pyx | 123 | ||||
| m--------- | gensvm/src/gensvm | 0 |
3 files changed, 0 insertions, 214 deletions
diff --git a/gensvm/pyx_gensvm.pxd b/gensvm/pyx_gensvm.pxd deleted file mode 100644 index be4d5f5..0000000 --- a/gensvm/pyx_gensvm.pxd +++ /dev/null @@ -1,91 +0,0 @@ -cimport numpy as np - -# Includes - -cdef extern from "gensvm_globals.h": - # Stuff for kerneltype - ctypedef enum KernelType: - pass - -cdef extern from "gensvm_sparse.h": - # stuff for GenSparse - - cdef struct GenSparse: - long nnz - long n_row - long n_col - double *values - long *ia - long *ja - - GenSparse *gensvm_init_sparse() - void gensvm_free_sparse(GenSparse *) - - -cdef extern from "gensvm_base.h": - - cdef struct GenData: - long K - long n - long m - long r - long *y - double *Z - GenSparse *spZ - double *RAW - double *Sigma - KernelType kerneltype - double *kernelparam - - cdef struct GenModel: - int weight_idx - long K - long n - long m - double epsilon - double p - double kappa - double lmd - double *V - double *Vbar - double *U - double *UU - double *Q - double *H - double *rho - double training_error - KernelType kerneltype - double *kernelparam - double kernel_eigen_cutoff - - GenModel *gensvm_init_model() - void gensvm_free_model(GenModel *) - - GenData *gensvm_init_data() - void gensvm_free_data(GenData *) - -cdef extern from "gensvm_train.h": - - void gensvm_train(GenModel *, GenData *, GenModel *) nogil - -cdef extern from "gensvm_sv.h": - - long gensvm_num_sv(GenModel *) - -cdef extern from "gensvm_helper.c": - - ctypedef char* char_const_ptr "char const *" - void set_model(GenModel *, double, double, double, double, int, int, - double, double, double, double, long, long) - void set_data(GenData *, char *, char *, np.npy_intp *, long) - char_const_ptr check_model(GenModel *) - void copy_V(void *, GenModel *) - long get_iter_count(GenModel *) - double get_training_error(GenModel *) - int get_status(GenModel *) - long get_n(GenModel *) - long get_m(GenModel *) - long get_K(GenModel *) - void free_data(GenData *) - void set_verbosity(int) - void gensvm_predict(char *, char *, long, long, long, char *) nogil diff --git a/gensvm/pyx_gensvm.pyx b/gensvm/pyx_gensvm.pyx deleted file mode 100644 index 394d4ca..0000000 --- a/gensvm/pyx_gensvm.pyx +++ /dev/null @@ -1,123 +0,0 @@ -""" -Wrapper for GenSVM - -Not implemented yet: - - vector of instance weights - - class weights - - seed model - - max_iter = -1 for unlimited - -""" - -from __future__ import print_function - -import numpy as np -cimport numpy as np - -cimport pyx_gensvm - -np.import_array() - -GENSVM_KERNEL_TYPES = ["linear", "poly", "rbf", "sigmoid"] - -def train_wrap( - np.ndarray[np.float64_t, ndim=2, mode='c'] X, - np.ndarray[np.int_t, ndim=1, mode='c'] y, - double p=1.0, - double lmd=pow(2, -8), - double kappa=0.0, - double epsilon=1e-6, - int weight_idx=1, - str kernel='linear', - double gamma=1.0, - double coef=0.0, - double degree=2.0, - double kernel_eigen_cutoff=1e-8, - int max_iter=100000000, - int random_seed=-1): - """ - """ - - # Initialize model and data - cdef GenModel *model = gensvm_init_model() - cdef GenData *data = gensvm_init_data() - cdef long n_obs - cdef long n_var - cdef long n_class - - # get the kernel index - kernel_index = GENSVM_KERNEL_TYPES.index(kernel) - - # get the number of classes - classes = np.unique(y) - n_obs = X.shape[0] - n_var = X.shape[1] - n_class = classes.shape[0] - - # Set the data - set_data(data, X.data, y.data, X.shape, n_class) - - # Set the model - set_model(model, p, lmd, kappa, epsilon, weight_idx, kernel_index, degree, - gamma, coef, kernel_eigen_cutoff, max_iter, random_seed) - - # Check the parameters - error_msg = check_model(model) - if error_msg: - gensvm_free_model(model) - free_data(data) - error_repl = error_msg.decode('utf-8') - raise ValueError(error_repl) - - # Do the actual training - with nogil: - gensvm_train(model, data, NULL) - - # copy the results - cdef np.ndarray[np.float64_t, ndim=2, mode='c'] V - V = np.empty((n_var+1, n_class-1)) - copy_V(V.data, model) - - # get other results from model - iter_count = get_iter_count(model) - training_error = get_training_error(model) - fit_status = get_status(model) - n_SV = gensvm_num_sv(model) - - # free model and data - gensvm_free_model(model); - free_data(data); - - return (V, n_SV, iter_count, training_error, fit_status) - -def predict_wrap( - np.ndarray[np.float64_t, ndim=2, mode='c'] X, - np.ndarray[np.float64_t, ndim=2, mode='c'] V - ): - """ - """ - - cdef long n_test_obs - cdef long n_var - cdef long n_class - - n_test_obs = X.shape[0] - n_var = X.shape[1] - n_class = V.shape[1] + 1 - - # output vector - cdef np.ndarray[np.int_t, ndim=1, mode='c'] predictions - predictions = np.empty((n_test_obs, ), dtype=np.int) - - # do the prediction - with nogil: - gensvm_predict(X.data, V.data, n_test_obs, n_var, n_class, - predictions.data) - - return predictions - -def set_verbosity_wrap(int verbosity): - """ - Control verbosity of gensvm library - """ - set_verbosity(verbosity) diff --git a/gensvm/src/gensvm b/gensvm/src/gensvm deleted file mode 160000 -Subproject 1f32ecf1d2414bf8e8107a95552c1164498a977 |
