14 using namespace shogun;
22 :
CMultiClassSVM(ONE_VS_ONE, C, k, lab), model(NULL), solver_type(LIBSVM_C_SVC)
33 struct svm_node* x_space;
45 SG_ERROR(
"Number of training vectors does not match number of labels\n");
56 for (int32_t i=0; i<
problem.l; i++)
62 x_space[2*i+1].index=-1;
68 param.kernel_type = LINEAR;
81 param.weight_label = NULL;
85 const char* error_msg = svm_check_parameter(&
problem,&
param);
94 if (
model->nr_class!=num_classes)
96 SG_ERROR(
"LibSVM model->nr_class=%d while num_classes=%d\n",
97 model->nr_class, num_classes);
102 int32_t* offsets=
SG_MALLOC(int32_t, num_classes);
105 for (int32_t i=1; i<num_classes; i++)
106 offsets[i] = offsets[i-1]+
model->nSV[i-1];
109 for (int32_t i=0; i<num_classes; i++)
111 for (int32_t j=i+1; j<num_classes; j++)
130 for (k=0; k<
model->nSV[i]; k++)
137 for (k=0; k<
model->nSV[j]; k++)
148 for (k=0; k<
model->label[i]; k++)
149 idx+=num_classes-k-1;
151 for (l=
model->label[i]+1; l<model->label[j]; l++)
156 for (k=0; k<
model->label[j]; k++)
157 idx+=num_classes-k-1;
159 for (l=
model->label[j]+1; l<model->label[i]; l++)
169 SG_DEBUG(
"svm[%d] has %d sv (total: %d), b=%f label:(%d,%d) -> svm[%d]\n", s, num_sv,
model->l, bias,
model->label[i],
model->label[j], idx);
183 svm_destroy_model(
model);