annotate extra/NaN/src/linear.h @ 12591:3aeba3530595 octave-forge

[nan] upgrade liblinear to v1.8
author schloegl
date Sun, 12 Apr 2015 17:52:15 +0000
parents 3c7b4702c1f1
children 0605cb0434ff
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6560
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
1 /*
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
2
12591
3aeba3530595 [nan] upgrade liblinear to v1.8
schloegl
parents: 12307
diff changeset
3 Copyright (c) 2007-2011 The LIBLINEAR Project.
3aeba3530595 [nan] upgrade liblinear to v1.8
schloegl
parents: 12307
diff changeset
4 Copyright (c) 2010,2015 Alois Schloegl <alois.schloegl@ist.ac.at>
6560
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
5 This function is part of the NaN-toolbox
7889
c101c486d80a fix web address
schloegl
parents: 6562
diff changeset
6 http://pub.ist.ac.at/~schloegl/matlab/NaN/
6560
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
7
12591
3aeba3530595 [nan] upgrade liblinear to v1.8
schloegl
parents: 12307
diff changeset
8 This code was extracted from liblinear-1.8 in Apr 2015 and
6560
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
9 modified for the use with Octave
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
10
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
11 This program is free software; you can redistribute it and/or modify
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
12 it under the terms of the GNU General Public License as published by
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
13 the Free Software Foundation; either version 3 of the License, or
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
14 (at your option) any later version.
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
15
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
16 This program is distributed in the hope that it will be useful,
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
17 but WITHOUT ANY WARRANTY; without even the implied warranty of
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
19 GNU General Public License for more details.
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
20
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
21 You should have received a copy of the GNU General Public License
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
22 along with this program; if not, see <http://www.gnu.org/licenses/>.
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
23
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
24 */
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
25
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
26 #ifndef _LIBLINEAR_H
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
27 #define _LIBLINEAR_H
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
28
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
29 #ifdef __cplusplus
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
30 extern "C" {
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
31 #endif
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
32
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
33 struct feature_node
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
34 {
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
35 int index;
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
36 double value;
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
37 };
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
38
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
39 struct problem
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
40 {
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
41 int l, n;
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
42 int *y;
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
43 struct feature_node **x;
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
44 double bias; /* < 0 if no bias term */
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
45 };
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
46
12591
3aeba3530595 [nan] upgrade liblinear to v1.8
schloegl
parents: 12307
diff changeset
47 enum { L2R_LR, L2R_L2LOSS_SVC_DUAL, L2R_L2LOSS_SVC, L2R_L1LOSS_SVC_DUAL, MCSVM_CS, L1R_L2LOSS_SVC, L1R_LR, L2R_LR_DUAL }; /* solver_type */
6560
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
48
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
49 struct parameter
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
50 {
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
51 int solver_type;
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
52
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
53 /* these are for training only */
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
54 double eps; /* stopping criteria */
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
55 double C;
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
56 int nr_weight;
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
57 int *weight_label;
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
58 double* weight;
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
59 };
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
60
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
61 struct model
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
62 {
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
63 struct parameter param;
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
64 int nr_class; /* number of classes */
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
65 int nr_feature;
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
66 double *w;
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
67 int *label; /* label of each class */
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
68 double bias;
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
69 };
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
70
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
71 struct model* train(const struct problem *prob, const struct parameter *param);
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
72 void cross_validation(const struct problem *prob, const struct parameter *param, int nr_fold, int *target);
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
73
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
74 int predict_values(const struct model *model_, const struct feature_node *x, double* dec_values);
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
75 int predict(const struct model *model_, const struct feature_node *x);
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
76 int predict_probability(const struct model *model_, const struct feature_node *x, double* prob_estimates);
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
77
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
78 int save_model(const char *model_file_name, const struct model *model_);
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
79 struct model *load_model(const char *model_file_name);
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
80
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
81 int get_nr_feature(const struct model *model_);
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
82 int get_nr_class(const struct model *model_);
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
83 void get_labels(const struct model *model_, int* label);
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
84
12591
3aeba3530595 [nan] upgrade liblinear to v1.8
schloegl
parents: 12307
diff changeset
85 void free_model_content(struct model *model_ptr);
3aeba3530595 [nan] upgrade liblinear to v1.8
schloegl
parents: 12307
diff changeset
86 void free_and_destroy_model(struct model **model_ptr_ptr);
6560
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
87 void destroy_param(struct parameter *param);
12591
3aeba3530595 [nan] upgrade liblinear to v1.8
schloegl
parents: 12307
diff changeset
88
3aeba3530595 [nan] upgrade liblinear to v1.8
schloegl
parents: 12307
diff changeset
89 const char *check_parameter(const struct problem *prob, const struct parameter *param);
3aeba3530595 [nan] upgrade liblinear to v1.8
schloegl
parents: 12307
diff changeset
90 int check_probability_model(const struct model *model);
3aeba3530595 [nan] upgrade liblinear to v1.8
schloegl
parents: 12307
diff changeset
91 void set_print_string_function(void (*print_func) (const char*));
6560
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
92
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
93 #ifdef __cplusplus
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
94 }
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
95 #endif
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
96
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
97 #endif /* _LIBLINEAR_H */
1170c9d6d1c4 method LibLinear is included
schloegl
parents:
diff changeset
98