En d'autres termes, on sélectionne la position à laquelle les coefficients
des deux vecteurs sont les plus éloignés et cette différence
(en valeur absolue) est la distance de Chebyshev.
# Implémentation
...
...
@@ -153,35 +164,66 @@ Les formats d'entrée et de sortie ont été choisis pour être
à l'utilisateur.
## Déroulement de l'algorithme
Une fois nos données correctement chargées, il faudra appliquer l'algorithme des k-moyennes à ces dernières :
## Déroulement de l'execution du programme
0. Déterminer le $k$.
1. Placer $k$ _centroïdes_ aléatoirement, appartenant chacun à un _cluster_.
2. Déterminer les points appartenant à chaque _cluster_ selon leur distance avec les _centroïdes_.
3. Une fois tous les points (ré)assignés à un _cluster_, calculer la nouvelle position des _centroïdes_ (il s'agira du nouveau centre du _cluster_ suite à la modification des points).
4. Recommencer à partir de l'étape 2 si la position d'au moins 1 _centroïde_ a été modifiée.
- appel de la commande avec éventuellement le passage des
fichiers d'entrée et de sortie en argument
- initialisation du nombre de dimentions de notre univers
- allocation de la mémoire pour les K groupes
- chargement des données d'entrée en mémoire
(possibilité d'intervertir ce point avec le précédent)
- application de l'algorithme k-means
- écriture des résultats formatés dans le fichier de sortie
(ou de la sortie standard, selon les arguments passés au programme)
## Fonctions à implémenter
Votre programme doit implémenter les fonctions suivantes :
- Définir _k_ centroïde aléatoirement
- Calculer la distance entre le centre d'un centroïde et d'un point
- Calculer la nouvelle position d'un centroïde (à partir de la moyenne des points)
- Lire un fichier contenant des points
- Déterminer les points appartenant aux _clusters_
- Déterminer le K optimal (Elbow optimal, silhouette method, ...)
Il faut absolument implémenter les fonctionalités suivantes:
- gestion des arguments en ligne de commande
- lecture et écriture de fichiers formatés
- initialisation aléatoire et/ou intelligente des centroïdes
- au moins trois fonctions de calcul de similarité / "distance" entre deux points
- calcul du centre de gravité (_centroïde_) d'une partition
- les étapes de l'algorithme k-means
## Vérification du travail réalisé
Afin de s'assurer que votre algorithme a été correctement implémenté vous devez mettre en place des fichiers de tests.
## Travail suppémentaire possible
### Affichage en temps réel
Au lieu d'afficher uniquement le résultat final, il s'agirait
d'afficher chaque étape effectuée afin de pouvoir observer
l'algorithme en action.
### Déterminer le nombre de clusters optimal
Étant donné que nous utilisons un algorithme non supervisé, il est difficile de vérifier si le résultat obtenu est "correct". Néanmoins, si nous appliquons notre algorithme sur des données dont on connaît le résultat attendu, alors il est possible de s'assurer que notre implémentation est correcte.
Faire des recherches sur les méthodes permettant d'optimiser
le nombre de clusters et les implémenter.
Si l'utilisation de cette fonctionalité est le souhait de l'utilisateur,
un seul caractère non-numérique est utilisé en lieu du nombre
de clusters souhaité.
De légères modifications du format sont envisageables pour autant
qu'elles soient justifiées.
Le fichier _data_for_tests.txt_ contient une dizaine de points directement assignés à un _cluster_. Vous devez vous assurer que votre implémentation des k-moyennes vous donne un résultat identique aux données de test.
### Interface graphique
On peut imaginer créer une interface graphique permettant de visualiser
le résultat dans une fenêtre graphique.
Pour cela, une option serait de mettre à profit la librairie gfx
utilisée pendant les labos de physique.
## Vérification du travail réalisé
Il serait bon de mettre en place des tests unitaires pour les
fonctions implémentées.
On implémente un algorithme non supervisé.
Il est donc difficile de vérifier si le résultat obtenu est "correct".
Néanmoins, un point placé dans le mauvais groupe est facile à identifier
par comparaisons de distances aux centroïdes.
# Travail à rendre
...
...
@@ -191,17 +233,14 @@ Le fichier _data_for_tests.txt_ contient une dizaine de points directement assig
- démonstration du programme
# Travail suppémentaire possible
## Affichage en temps réel
# Références
Au lieu d'afficher directement le résultat final de votre implémentationde l'algorithme des k-moyennes, vous devez afficher chaque étape effectuée afin que l'on puisse constater comment l'assignation des points aux _clusters_ est effectuée.