SHOGUN  3.2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
OnlineLinearMachine.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License as published by
4  * the Free Software Foundation; either version 3 of the License, or
5  * (at your option) any later version.
6  *
7  * Written (W) 1999-2009 Soeren Sonnenburg
8  * Copyright (C) 1999-2009 Fraunhofer Institute FIRST and Max-Planck-Society
9  */
10 
11 #ifndef _ONLINELINEARCLASSIFIER_H__
12 #define _ONLINELINEARCLASSIFIER_H__
13 
14 #include <shogun/lib/config.h>
15 
16 #include <shogun/lib/common.h>
18 #include <shogun/machine/Machine.h>
19 
20 #include <stdio.h>
21 
22 namespace shogun
23 {
24 class CBinaryLabels;
25 class CFeatures;
26 class CRegressionLabels;
27 
55 {
56  public:
59  virtual ~COnlineLinearMachine();
60 
66  virtual void get_w(float32_t*& dst_w, int32_t& dst_dims)
67  {
68  ASSERT(w && w_dim>0)
69  dst_w=w;
70  dst_dims=w_dim;
71  }
72 
79  virtual void get_w(float64_t*& dst_w, int32_t& dst_dims)
80  {
81  ASSERT(w && w_dim>0)
82  dst_w=SG_MALLOC(float64_t, w_dim);
83  for (int32_t i=0; i<w_dim; i++)
84  dst_w[i]=w[i];
85  dst_dims=w_dim;
86  }
87 
93  {
94  float32_t * dst_w = SG_MALLOC(float32_t, w_dim);
95  for (int32_t i=0; i<w_dim; i++)
96  dst_w[i]=w[i];
97  return SGVector<float32_t>(dst_w, w_dim);
98  }
99 
105  virtual void set_w(float32_t* src_w, int32_t src_w_dim)
106  {
107  SG_FREE(w);
108  w=SG_MALLOC(float32_t, src_w_dim);
109  memcpy(w, src_w, size_t(src_w_dim)*sizeof(float32_t));
110  w_dim=src_w_dim;
111  }
112 
119  virtual void set_w(float64_t* src_w, int32_t src_w_dim)
120  {
121  SG_FREE(w);
122  w=SG_MALLOC(float32_t, src_w_dim);
123  for (int32_t i=0; i<src_w_dim; i++)
124  w[i] = src_w[i];
125  w_dim=src_w_dim;
126  }
127 
132  virtual void set_bias(float32_t b)
133  {
134  bias=b;
135  }
136 
141  virtual float32_t get_bias()
142  {
143  return bias;
144  }
145 
151  {
152  SG_REF(feat);
154  features=feat;
155  }
156 
163  virtual CRegressionLabels* apply_regression(CFeatures* data=NULL);
164 
171  virtual CBinaryLabels* apply_binary(CFeatures* data=NULL);
172 
174  virtual float64_t apply_one(int32_t vec_idx)
175  {
177  return CMath::INFTY;
178  }
179 
188  virtual float32_t apply_one(float32_t* vec, int32_t len);
189 
196 
202 
208  virtual const char* get_name() const { return "OnlineLinearMachine"; }
209 
213  virtual void start_train() { }
214 
218  virtual void stop_train() { }
219 
230 
231  protected:
240  virtual bool train_machine(CFeatures* data=NULL);
241 
248 
250  virtual bool train_require_labels() const { return false; }
251 
252  protected:
254  int32_t w_dim;
261 };
262 }
263 #endif

SHOGUN Machine Learning Toolbox - Documentation