35 #ifndef SHARK_MODELS_NEARESTNEIGHBORCLASSIFIER_H 36 #define SHARK_MODELS_NEARESTNEIGHBORCLASSIFIER_H 55 template <
class InputType>
84 {
return "NearestNeighborClassifier"; }
115 "[SoftNearestNeighborClassifier::setParameterVector] invalid number of parameters");
127 return boost::shared_ptr<State>(
new EmptyState());
133 void eval(BatchInputType
const& patterns, BatchOutputType& output,
State& state)
const{
137 output.resize(numPatterns);
140 for(std::size_t p = 0; p != numPatterns;++p){
141 std::vector<double> histogram(
m_classes, 0.0);
147 if (d < 1e-100) histogram[neighbors[p*
m_neighbors+k].value] += 1e100;
148 else histogram[neighbors[p*
m_neighbors+k].value] += 1.0 / d;
151 output(p) =
static_cast<unsigned int>(std::max_element(histogram.begin(),histogram.end()) - histogram.begin());