ARLK: include/svm.h Source File
ARLK  0.1.0
Action Recognition Library for Kinect
svm.h
Go to the documentation of this file.
1 #ifndef _LIBSVM_H
2 #define _LIBSVM_H
3 
4 #define LIBSVM_VERSION 317
5 
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
9 
10 extern int libsvm_version;
11 
12 struct svm_node
13 {
14  int index;
15  double value;
16 };
17 
19 {
20  int l;
21  double *y;
22  struct svm_node **x;
23 };
24 
25 enum { C_SVC, NU_SVC, ONE_CLASS, EPSILON_SVR, NU_SVR }; /* svm_type */
26 enum { LINEAR, POLY, RBF, SIGMOID, PRECOMPUTED }; /* kernel_type */
27 
29 {
30  int svm_type;
32  int degree; /* for poly */
33  double gamma; /* for poly/rbf/sigmoid */
34  double coef0; /* for poly/sigmoid */
35 
36  /* these are for training only */
37  double cache_size; /* in MB */
38  double eps; /* stopping criteria */
39  double C; /* for C_SVC, EPSILON_SVR and NU_SVR */
40  int nr_weight; /* for C_SVC */
41  int *weight_label; /* for C_SVC */
42  double* weight; /* for C_SVC */
43  double nu; /* for NU_SVC, ONE_CLASS, and NU_SVR */
44  double p; /* for EPSILON_SVR */
45  int shrinking; /* use the shrinking heuristics */
46  int probability; /* do probability estimates */
47 };
48 
49 //
50 // svm_model
51 //
52 struct svm_model
53 {
54  struct svm_parameter param; /* parameter */
55  int nr_class; /* number of classes, = 2 in regression/one class svm */
56  int l; /* total #SV */
57  struct svm_node **SV; /* SVs (SV[l]) */
58  double **sv_coef; /* coefficients for SVs in decision functions (sv_coef[k-1][l]) */
59  double *rho; /* constants in decision functions (rho[k*(k-1)/2]) */
60  double *probA; /* pariwise probability information */
61  double *probB;
62  int *sv_indices; /* sv_indices[0,...,nSV-1] are values in [1,...,num_traning_data] to indicate SVs in the training set */
63 
64  /* for classification only */
65 
66  int *label; /* label of each class (label[k]) */
67  int *nSV; /* number of SVs for each class (nSV[k]) */
68  /* nSV[0] + nSV[1] + ... + nSV[k-1] = l */
69  /* XXX */
70  int free_sv; /* 1 if svm_model is created by svm_load_model*/
71  /* 0 if svm_model is created by svm_train */
72 };
73 
74 struct svm_model *svm_train(const struct svm_problem *prob, const struct svm_parameter *param);
75 void svm_cross_validation(const struct svm_problem *prob, const struct svm_parameter *param, int nr_fold, double *target);
76 
77 int svm_save_model(const char *model_file_name, const struct svm_model *model);
78 struct svm_model *svm_load_model(const char *model_file_name);
79 
80 int svm_get_svm_type(const struct svm_model *model);
81 int svm_get_nr_class(const struct svm_model *model);
82 void svm_get_labels(const struct svm_model *model, int *label);
83 void svm_get_sv_indices(const struct svm_model *model, int *sv_indices);
84 int svm_get_nr_sv(const struct svm_model *model);
85 double svm_get_svr_probability(const struct svm_model *model);
86 
87 double svm_predict_values(const struct svm_model *model, const struct svm_node *x, double* dec_values);
88 double svm_predict(const struct svm_model *model, const struct svm_node *x);
89 double svm_predict_probability(const struct svm_model *model, const struct svm_node *x, double* prob_estimates);
90 
91 void svm_free_model_content(struct svm_model *model_ptr);
92 void svm_free_and_destroy_model(struct svm_model **model_ptr_ptr);
94 
95 const char *svm_check_parameter(const struct svm_problem *prob, const struct svm_parameter *param);
96 int svm_check_probability_model(const struct svm_model *model);
97 
98 void svm_set_print_string_function(void (*print_func)(const char *));
99 
100 #ifdef __cplusplus
101 }
102 #endif
103 
104 #endif /* _LIBSVM_H */