34 #ifndef SHARK_ALGORITHMS_TRAINERS_KERNELMEAN_H 35 #define SHARK_ALGORITHMS_TRAINERS_KERNELMEAN_H 50 template<
class InputType>
57 {
return "KernelMeanClassifier"; }
65 std::vector<std::size_t> numClasses =
classSizes(dataset);
66 double coeffs[] = {0,0};
68 SHARK_CHECK(numClasses[0] > 0,
"[KernelMeanClassifier::train] class 0 has no class members" );
69 SHARK_CHECK(numClasses[1] > 0,
"[KernelMeanClassifier::train] class 1 has no class members" );
71 coeffs[0] = 1.0 / numClasses[0];
72 coeffs[1] = -1.0 / numClasses[1];
75 double classBias[]={0.0,0.0};
76 RealVector params(patterns + 1);
81 BOOST_FOREACH(ElementRef element,dataset.
elements()){
83 unsigned int y = element.label;
86 params(i) = coeffs[y];
89 BOOST_FOREACH(ElementRef element2,dataset.
elements()){
90 if (element2.label != y)
97 params(patterns) = 0.5 * (classBias[0] *
sqr(coeffs[0]) - classBias[1] *
sqr(coeffs[1]));