annotate extra/NaN/src/linear.h @ 12706:01c5f2e1ec48 octave-forge

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