| pktools 2.6.7 Processing Kernel for geospatial data

svm.h
1#ifndef _LIBSVM_H
2#define _LIBSVM_H
3
4#define LIBSVM_VERSION 312
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
18 struct svm_problem
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
28 struct svm_parameter
29{
30 int svm_type;
31 int kernel_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 bool verbose;//pk
48};
49
50//
51// svm_model
52//
53 struct svm_model
54{
55 struct svm_parameter param; /* parameter */
56 int nr_class; /* number of classes, = 2 in regression/one class svm */
57 int l; /* total #SV */
58 struct svm_node **SV; /* SVs (SV[l]) */
59 double **sv_coef; /* coefficients for SVs in decision functions (sv_coef[k-1][l]) */
60 double *rho; /* constants in decision functions (rho[k*(k-1)/2]) */
61 double *probA; /* pariwise probability information */
62 double *probB;
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 double svm_get_svr_probability(const struct svm_model *model);
84
85 double svm_predict_values(const struct svm_model *model, const struct svm_node *x, double* dec_values);
86 double svm_predict(const struct svm_model *model, const struct svm_node *x);
87 double svm_predict_probability(const struct svm_model *model, const struct svm_node *x, double* prob_estimates);
88
89 void svm_free_model_content(struct svm_model *model_ptr);
90 void svm_free_and_destroy_model(struct svm_model **model_ptr_ptr);
91 void svm_destroy_param(struct svm_parameter *param);
92
93 const char *svm_check_parameter(const struct svm_problem *prob, const struct svm_parameter *param);
94 int svm_check_probability_model(const struct svm_model *model);
95
96 void svm_set_print_string_function(void (*print_func)(const char *));
97
98#ifdef __cplusplus
99}
100#endif
101
102#endif /* _LIBSVM_H */
svm_model
Definition: svm.h:54
svm_node
Definition: svm.h:13
svm_parameter
Definition: svm.h:29
svm_problem
Definition: svm.h:19