source: orange/source/orange/libsvm/svm.h @ 11664:4bb73da41192

Revision 11664:4bb73da41192, 3.3 KB checked in by Ales Erjavec <ales.erjavec@…>, 8 months ago (diff)

Updated the included LIBSVM to version 3.17.

Line 
1#ifndef _LIBSVM_H
2#define _LIBSVM_H
3
4#define LIBSVM_VERSION 317
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10extern int libsvm_version;
11
12struct svm_node
13{
14    int index;
15    double value;
16};
17
18struct svm_problem
19{
20    int l;
21    double *y;
22    struct svm_node **x;
23};
24
25enum { C_SVC, NU_SVC, ONE_CLASS, EPSILON_SVR, NU_SVR }; /* svm_type */
26enum { LINEAR, POLY, RBF, SIGMOID, PRECOMPUTED }; /* kernel_type */
27
28struct 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};
48
49//
50// svm_model
51//
52struct 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
74struct svm_model *svm_train(const struct svm_problem *prob, const struct svm_parameter *param);
75void svm_cross_validation(const struct svm_problem *prob, const struct svm_parameter *param, int nr_fold, double *target);
76
77int svm_save_model(const char *model_file_name, const struct svm_model *model);
78struct svm_model *svm_load_model(const char *model_file_name);
79
80int svm_get_svm_type(const struct svm_model *model);
81int svm_get_nr_class(const struct svm_model *model);
82void svm_get_labels(const struct svm_model *model, int *label);
83void svm_get_sv_indices(const struct svm_model *model, int *sv_indices);
84int svm_get_nr_sv(const struct svm_model *model);
85double svm_get_svr_probability(const struct svm_model *model);
86
87double svm_predict_values(const struct svm_model *model, const struct svm_node *x, double* dec_values);
88double svm_predict(const struct svm_model *model, const struct svm_node *x);
89double svm_predict_probability(const struct svm_model *model, const struct svm_node *x, double* prob_estimates);
90
91void svm_free_model_content(struct svm_model *model_ptr);
92void svm_free_and_destroy_model(struct svm_model **model_ptr_ptr);
93void svm_destroy_param(struct svm_parameter *param);
94
95const char *svm_check_parameter(const struct svm_problem *prob, const struct svm_parameter *param);
96int svm_check_probability_model(const struct svm_model *model);
97
98void svm_set_print_string_function(void (*print_func)(const char *));
99
100#ifdef __cplusplus
101}
102#endif
103
104#endif /* _LIBSVM_H */
Note: See TracBrowser for help on using the repository browser.