You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3nar/README.md

3.2 KiB

3NAR (n nearest neighbor avrage rapid)

par Ludovic CASTIGLIA

Résumé du projet

Le but de ce projet est de produire un code python qui implémente l'algorithme KNN naïf et 3nar (une version optimisé de l'algorithme KNN naïf). Comparer les performences de ces deux algorithmes. Puis uttiliser cette algorythme dans des cas réel d'uttilisation comme par exemple du traitement d'image (floutage, réduction de bruit ou autre). Pour trouver les valeurs RGB d'un nouveau pixel, nous calculons la moyenne ou la médiane des valeurs R G et B des n pixels voisins. Uttilisant donc l'algorithme KNN non plus pour de la classification mais pour de la régression.

Principe de l'algorithme 3nar

Le but de cette algorithme repose sur le fait de ne pas avoir à calculer la distance entre tout les points de l'espace et le point que l'on cherche pour trouver les n plus proches voisins. En effet, calculer la distance avec tout les autres points est un processus couteux et ce plus le nombre de points augmente dans notre espace. Ainsi pour 3nar, nous allons diviser l'espace en région. Lorsque nous voudrons trouver les voisins d'un point, nous trouvons dans quel espace il est situé (calculé en fonction de ses coordonées), puis nous calculons la distance avec tout les points de cette région, nous selectionnons ensuite tout les points qui sont à une distance inferieur à la distance entre le point et la bordure de cette espace. Puis si il n'y a pas assez de point sélectioné, on trouve les espaces voisins à notre espace et on recommence à selectioner les points mais dans notre nouvel espace. On répète ses opérations jusqu'a trouver les n plus proche voisins de notre point dans l'espace. Nous pouvons également enregister le résultat de certaine opérations récurente comme trouver les coordonées des espaces autour d'un espace en meimoire. Cela nous permet d'éviter de les calculers plusieurs fois et ainsi nous fait gagnier en complexité. Remplaçant ainsi une opération qui peut être en O(n²) ou pire en O(1) car nous n'avons à calculer qu'une seul fois ce résultat dans toutes l'éxecution de notre program.

Calendirer du projet

Dans un premier temps, je vais me concentrer sur la réalisation des deux algorithmes naïf et 3nar. J'héstime que j'aurais fini cette tâche autour du 29/01/2025. Puis une fois que j'aurais réalisé ces algorithmes, je vais développer les exemples d'uttilisations. En fonction de la complexité des exemples, celà peut prendre plus ou moins de temps mais je devrais être capable de finir avant le 31/01/2025 au soir. Enfin, durant le weekend du 01|02 fevrier, je vais réaliser le rapport final. Avant de soumettre mon code et mon rapport le 02/02/2025 au soir.