16 using namespace shogun;
34 struct svm_node* x_space;
49 SG_ERROR(
"Number of training vectors does not match number of "
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);
158 for (k=0; k<
model->label[i]; k++)
159 idx+=num_classes-k-1;
161 for (l=
model->label[i]+1; l<model->label[j]; l++)
166 for (k=0; k<
model->label[j]; k++)
167 idx+=num_classes-k-1;
169 for (l=
model->label[j]+1; l<model->label[i]; l++)
179 SG_DEBUG(
"svm[%d] has %d sv (total: %d), b=%f "
180 "label:(%d,%d) -> svm[%d]\n",
182 model->label[j], idx);
198 svm_destroy_model(
model);