13 #ifndef _WDSVMOCAS_H___
14 #define _WDSVMOCAS_H___
27 template <
class ST>
class CStringFeatures;
30 class CWDSVMOcas :
public CMachine
43 CWDSVMOcas(E_SVM_TYPE type);
55 CStringFeatures<uint8_t>* traindat, CLabels* trainlab);
56 virtual ~CWDSVMOcas();
94 inline float64_t get_epsilon() {
return epsilon; }
100 inline void set_features(CStringFeatures<uint8_t>* feat)
111 inline CStringFeatures<uint8_t>* get_features()
121 inline void set_bias_enabled(
bool enable_bias) { use_bias=enable_bias; }
127 inline bool get_bias_enabled() {
return use_bias; }
133 inline void set_bufsize(int32_t sz) { bufsize=sz; }
139 inline int32_t get_bufsize() {
return bufsize; }
146 inline void set_degree(int32_t d, int32_t from_d)
156 inline int32_t get_degree() {
return degree; }
164 virtual CBinaryLabels* apply_binary(CFeatures* data=NULL);
172 virtual CRegressionLabels* apply_regression(CFeatures* data=NULL);
188 uint8_t* vec=features->get_feature_vector(num, len, free_vec);
190 ASSERT(len==string_length)
192 for (int32_t j=0; j<string_length; j++)
194 int32_t offs=w_dim_single_char*j;
196 for (int32_t k=0; (j+k<string_length) && (k<degree); k++)
198 val=val*alphabet_size + vec[j+k];
199 sum+=wd_weights[k] * w[offs+val];
203 features->free_feature_vector(vec, num, free_vec);
204 return sum/normalization_const;
208 inline void set_normalization_const()
211 normalization_const=0;
212 for (int32_t i=0; i<degree; i++)
213 normalization_const+=(string_length-i)*wd_weights[i]*wd_weights[i];
215 normalization_const=CMath::sqrt(normalization_const);
216 SG_DEBUG("normalization_const:%f\n", normalization_const)
223 inline
float64_t get_normalization_const() {
return normalization_const; }
232 SGVector<float64_t> apply_get_outputs(CFeatures* data);
238 int32_t set_wd_weights();
248 static void compute_W(
250 uint32_t nSel,
void* ptr );
265 static void* add_new_cut_helper(
void* ptr);
275 static int add_new_cut(
276 float64_t *new_col_H, uint32_t *new_cut, uint32_t cut_length,
277 uint32_t nSel,
void* ptr );
284 static void* compute_output_helper(
void* ptr);
291 static int compute_output(
float64_t *output,
void* ptr );
302 static inline void print(ocas_return_value_T value)
309 virtual const char* get_name()
const {
return "WDSVMOcas"; }
320 virtual bool train_machine(CFeatures* data=NULL);
324 CStringFeatures<uint8_t>* features;
347 int32_t string_length;
349 int32_t alphabet_size;
363 int32_t w_dim_single_char;
379 #endif //USE_GPL_SHOGUN
void print(CJLCoverTreePoint &p)
#define MACHINE_PROBLEM_TYPE(PT)
all of classes and functions are contained in the shogun namespace
void set_epsilon(float *begin, float max)