#ifndef _SFASTLSVM_H
#define _SFASTLSVM_H



class sFastLSVM
{
public:

sFastLSVM(struct lkm_parameter *par, struct problem *prob);
sFastLSVM(int pred_strategy = 0);
~sFastLSVM();

void train();
double* cross_validation();
void save(char *file);
void load(char *file);
double* predict(struct problem *test);
double predict(struct node *test);
double* predict_p(struct problem *test);
double* predict(struct problem *test, int k);

double predict_p(struct node *test);

CoverTree *get_cover_tree(){return coverTree;};

private:

struct lkm_parameter *par;
struct problem *prob;
struct problem *prob_pl;
struct problem *ct_prob;
CoverTree *coverTree;
ParEst *parEst;
int pred_strategy;

//bool too_unbalanced(struct problem *p);
//bool contains(int el, int *arr, int n);
void cross_validation_int(const problem *prob, int nr_fold, double *target);

};

#endif
