37 #ifndef SHARK_ALGORITHMS_MCSVMWWTRAINER_H 38 #define SHARK_ALGORITHMS_MCSVMWWTRAINER_H 96 template <
class InputType,
class CacheType =
float>
112 : base_type(kernel, C, offset, unconstrained)
117 {
return "McSvmWWTrainer"; }
125 RealMatrix linear(ic, classes-1,1.0);
126 UIntVector
rho(classes-1,0);
129 for (
unsigned int r=0, y=0; y<classes; y++)
131 for (
unsigned int p=0, pp=0; p<classes-1; p++, pp++, r++)
148 for (
unsigned int r=0, yv=0; yv<classes; yv++)
150 for (
unsigned int pv=0, ppv=0; pv<classes-1; pv++, ppv++)
152 if (ppv == yv) ppv++;
153 for (
unsigned int yw=0; yw<classes; yw++, r++)
155 QpFloatType baseM = (yv == yw ? (
QpFloatType)0.25 : (QpFloatType)0.0) - (ppv == yw ? (
QpFloatType)0.25 : (QpFloatType)0.0);
159 M.
add(r, ppv - (ppv >= yw ? 1 : 0), baseM + (QpFloatType)0.25);
163 M.
add(r, yv - (yv >= yw ? 1 : 0), baseM - (QpFloatType)0.25);
167 unsigned int pw = ppv - (ppv >= yw ? 1 : 0);
168 unsigned int pw2 = yv - (yv >= yw ? 1 : 0);
171 M.
add(r, pw, baseM + (QpFloatType)0.25);
172 M.
add(r, pw2, baseM - (QpFloatType)0.25);
176 M.
add(r, pw2, baseM - (QpFloatType)0.25);
177 M.
add(r, pw, baseM + (QpFloatType)0.25);
189 RealMatrix alpha(ic,classes-1);
190 RealVector bias(classes,0);
194 PrecomputedMatrixType matrix(&km);
206 alpha = problem.solution();
222 alpha = problem.solution();
228 for (std::size_t i=0; i<ic; i++)
230 unsigned int y = dataset.
element(i).label;
231 for (std::size_t c=0; c<classes; c++)
234 std::size_t r = (classes-1) * y;
235 for (std::size_t p=0; p<classes-1; p++, r++)
236 sum += nu(r, c) * alpha(i,p);
250 template <
class InputType>
262 {
return "LinearMcSvmWWTrainer"; }
278 #define McSvmRDSTrainer McSvmWWTrainer 279 #define LinearMcSvmRDSTrainer LinearMcSvmWWTrainer