34 struct svm_node* x_space;
49 SG_ERROR(
"Number of training vectors does not match number of "
60 x_space=SG_MALLOC(
struct svm_node, 2*
problem.l);
62 for (int32_t i=0; i<
problem.l; i++)
68 x_space[2*i+1].index=-1;
74 param.kernel_type = LINEAR;
87 param.weight_label = NULL;
91 const char* error_msg = svm_check_parameter(&
problem,&
param);
100 if (
model->nr_class!=num_classes)
102 SG_ERROR(
"LibSVM model->nr_class=%d while num_classes=%d\n",
103 model->nr_class, num_classes);
108 int32_t* offsets=SG_MALLOC(int32_t, num_classes);
111 for (int32_t i=1; i<num_classes; i++)
112 offsets[i] = offsets[i-1]+
model->nSV[i-1];
115 for (int32_t i=0; i<num_classes; i++)
117 for (int32_t j=i+1; j<num_classes; j++)
136 for (k=0; k<
model->nSV[i]; k++)
138 SG_DEBUG(
"setting SV[%d] to %d\n", sv_idx,
139 model->SV[offsets[i]+k]->index);
145 for (k=0; k<
model->nSV[j]; k++)
147 SG_DEBUG(
"setting SV[%d] to %d\n", sv_idx,
148 model->SV[offsets[i]+k]->index);
160 for (k=0; k<
model->label[i]; k++)
161 idx+=num_classes-k-1;
163 for (l=
model->label[i]+1; l<model->label[j]; l++)
168 for (k=0; k<
model->label[j]; k++)
169 idx+=num_classes-k-1;
171 for (l=
model->label[j]+1; l<model->label[i]; l++)
175 else if (num_classes == 3)
179 else if (num_classes == 2)
189 SG_DEBUG(
"svm[%d] has %d sv (total: %d), b=%f "
190 "label:(%d,%d) -> svm[%d]\n",
192 model->label[j], idx);
208 svm_destroy_model(
model);
virtual bool init(CFeatures *lhs, CFeatures *rhs)
virtual ELabelType get_label_type() const =0
multiclass one vs one strategy used to train generic multiclass machines for K-class problems with bu...
The class Labels models labels, i.e. class assignments of objects.
virtual int32_t get_num_labels() const =0
multi-class labels 0,1,...
virtual ~CMulticlassLibSVM()
virtual int32_t get_num_vectors() const =0
float64_t m_max_train_time
LIBSVM_SOLVER_TYPE solver_type
Multiclass Labels for multi-class classification.
void set_objective(float64_t v)
void set_bias(float64_t bias)
CMulticlassStrategy * m_multiclass_strategy
bool set_alpha(int32_t idx, float64_t val)
bool set_support_vector(int32_t idx, int32_t val)
int32_t get_num_classes() const
all of classes and functions are contained in the shogun namespace
The class Features is the base class of all feature objects.
bool create_multiclass_svm(int32_t num_classes)
A generic Support Vector Machine Interface.
virtual bool train_machine(CFeatures *data=NULL)
bool set_svm(int32_t num, CSVM *svm)
CMulticlassLibSVM(LIBSVM_SOLVER_TYPE st=LIBSVM_C_SVC)