38 #ifndef SHARK_ML_JAAKOLAHEURISTIC_H
39 #define SHARK_ML_JAAKOLAHEURISTIC_H
69 template<
class InputType>
73 Elements elements = dataset.
elements();
74 if(!nearestFalseNeighbor) {
75 for(
typename Elements::iterator it = elements.begin(); it != elements.end(); ++it){
76 typename Elements::iterator itIn = it;
78 for (; itIn != elements.end(); itIn++) {
79 if (itIn->label == it->label)
continue;
85 for(
typename Elements::iterator it = elements.begin(); it != elements.end(); ++it){
86 double minDistSqr = 0;
87 for (
typename Elements::iterator itIn = elements.begin(); itIn != elements.end(); itIn++) {
88 if (itIn->label == it->label)
continue;
90 if( (minDistSqr == 0) || (dist < minDistSqr)) minDistSqr = dist;
92 m_stat.push_back(minDistSqr);
103 std::size_t ic =
m_stat.size();
111 return std::sqrt(
m_stat[0]);
116 return std::sqrt(
m_stat[ic-1]);
121 double t = quantile * (ic - 1);
122 std::size_t i = (std::size_t)floor(t);
124 return ((1.0 - rest) * std::sqrt(
m_stat[i]) + rest * std::sqrt(
m_stat[i+1]));
134 double s =
sigma(quantile);
135 return 0.5 / (s * s);