From 6f3a3ca3f47e3fc867872cdb1dd21bcf10da21fc Mon Sep 17 00:00:00 2001 From: Maurin Felix Date: Mon, 9 Dec 2019 11:38:58 +0100 Subject: [PATCH] algo des k proches voisins (en cours) --- tests/examples/k_proches_voisins | 74 ++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 tests/examples/k_proches_voisins diff --git a/tests/examples/k_proches_voisins b/tests/examples/k_proches_voisins new file mode 100644 index 0000000..37c1ebf --- /dev/null +++ b/tests/examples/k_proches_voisins @@ -0,0 +1,74 @@ +#include +#include +#include + + +int img_dict() { + map< math::csignal, std::string > dico; + return 0 +}; + +double distance(math::csignal v1, math::csignal v2, int n){ + + if (v1.size() != v2.size()) { + throw std::runtime_error("les deux vecteurs doivent être de même longueur"); + }; + + int m = v1.size(); + double d; + double di; + for (int i = 0 ; i dico, int k){ + double d; + vector< std::pair > k_min; + int avance = 0; + int arret = 0; + int droite = 0; + int gauche = 0; + int rejet = 0; + vector choix; + for(auto& ref_vect : dico){ + d = distance(new_vect, ref_vect.first ); + if (k_min.size() < k ){ + k_min.push_back({d, ref_vect.first}); + sort(k_min.begin(), k_min.end()); + } else if (d < k_min[k-1].first){ + k_min.push_back({d, ref_vect.first}); + sort(k_min.begin(), k_min.end()); + k_min.pop_back(); + }; + + } ; + for(auto i = k_min.begin(); i != k_min.end(); i++) { + if (dico[k_min[i].second].second == "avance"){ + avance = avance + 1 + } else if (dico[k_min[i].second] == "arret"){ + arret = arret + 1 + } else if (dico[k_min[i].second] == "droite"){ + arret = droite + 1 + } else if (dico[k_min[i].second] == "gauche"){ + arret = gauche + 1 + } else if (dico[k_min[i].second] == "rejet"){ + arret = rejet + 1 + } ; + + choix.push_back(avance); + choix.push_back(arret); + choix.push_back(droite); + choix.push_back(gauche); + choix.push_back(rejet); + + + + }; +};