37 #ifndef SHARK_ALGORITHMS_MCSVMCSTRAINER_H 38 #define SHARK_ALGORITHMS_MCSVMCSTRAINER_H 91 template <
class InputType,
class CacheType =
float>
107 : base_type(kernel, C, offset, unconstrained)
112 {
return "McSvmCSTrainer"; }
120 RealMatrix linear(ic, classes-1,1.0);
123 for (
unsigned int r=0, y=0; y<classes; y++)
125 for (
unsigned int p=0, pp=0; p<classes-1; p++, pp++, r++)
142 for (
unsigned int r=0, yv=0; yv<classes; yv++)
144 for (
unsigned int pv=0, ppv=0; pv<classes-1; pv++, ppv++)
146 if (ppv == yv) ppv++;
147 for (
unsigned int yw=0; yw<classes; yw++, r++)
149 QpFloatType baseM = (yv == yw ? (
QpFloatType)0.25 : (QpFloatType)0.0) - (ppv == yw ? (
QpFloatType)0.25 : (QpFloatType)0.0);
153 M.
add(r, ppv - (ppv >= yw ? 1 : 0), baseM + (QpFloatType)0.25);
157 M.
add(r, yv - (yv >= yw ? 1 : 0), baseM - (QpFloatType)0.25);
161 unsigned int pw = ppv - (ppv >= yw ? 1 : 0);
162 unsigned int pw2 = yv - (yv >= yw ? 1 : 0);
165 M.
add(r, pw, baseM + (QpFloatType)0.25);
166 M.
add(r, pw2, baseM - (QpFloatType)0.25);
170 M.
add(r, pw2, baseM - (QpFloatType)0.25);
171 M.
add(r, pw, baseM + (QpFloatType)0.25);
184 RealMatrix alpha(ic,classes-1,0.0);
185 RealVector bias(classes,0.0);
189 PrecomputedMatrixType matrix(&km);
202 alpha = problem.solution();
219 alpha = problem.solution();
224 for (std::size_t i=0; i<ic; i++)
226 unsigned int y = dataset.
element(i).label;
227 for (std::size_t c=0; c<classes; c++)
230 std::size_t r = (classes-1) * y;
231 for (std::size_t p=0; p<classes-1; p++, r++)
232 sum += nu(r, c) * alpha(i, p);
247 template <
class InputType>
258 {
return "LinearMcSvmCSTrainer"; }
274 #define McSvmRDMTrainer McSvmCSTrainer 275 #define LinearMcSvmRDMTrainer LinearMcSvmCSTrainer