artificial | ||
new-data | ||
.gitignore | ||
mydatalib.py | ||
myplotlib.py | ||
README.md | ||
requirements.txt | ||
tp1-kmeans.py | ||
tp2-agglo.py | ||
tp3-dbscan.py | ||
tp4-mean-shift.py | ||
tp5-artificial-dataset.py | ||
tp5-preprocessing.py | ||
tp6-preprocessing.py | ||
tp6-real-dataset.py |
5ISS - Analyse et Traitement de Données
Paul Faure - Arnaud Vergnet
Ce dépôt contient les sources utilisées pour le TP de 5ISS en Analyse et Traitement de Données.
Il comprend un fichier par partie de TP (démarrant par tpX
avec X la partie du tp) et deux fichiers servant de librairie commune (mydatalib.py
pour le traitement de données, myplotlib.py
pour l'affichage de graphes).
Installation
Ce TP utilise Python >3.8. Pour démarrer, cloner le dépôt et se déplacer dedans :
git clone https://git.etud.insa-toulouse.fr/vergnet/tp-analyse-donnees.git && cd tp-analyse-donnees
Ensuite créer un environnement virtuel et installer les dépendances :
python3 -m venv ./venv
pip install -r ./requirements.txt
Chaque scripte suppose que des jeux de données venant du benchmark de deric sont disponibles dans le dossier artificial
.
L'environnement est maintenant prêt.
Fonctionnement général
Chaque script va générer les graphes de résultat dans le dossier ./IMG
. Le dossier ./IMG/DATA_VISUALISATION
contient les graphes des jeux de données brutes et mises à l'échelle, sans clustering.
Ensuite, nous avons un dossier par algorithme. Chacun contient ensuite un dossier par jeu de donnée. Enfin, ces jeux de données possèdent un dossier CLUSTERS
contenant les graphes de clusters et un dossier EVALUATIONS
contenant les métriques d'évaluation.
Chaque script peut être configuré à l'aide de plusieurs variables :
dataset_name
: le nom du dataset à utiliserpath
: le chemin vers le dossier contenant les dataset
Certains scripts possèdent d'autres variables de configurations expliquées dans la suite.
Parties du TP
K-Means
Cette partie se lance à l'aide de la commande suivante :
python3 tp1-kmeans.py
Ce script va appliquer l'algorithme K-Means sur le dataset donné pour k variant de 2 à 49.
Agglomerative
Cette partie se lance à l'aide de la commande suivante :
python3 tp2-agglo.py
Ce script possède un fonctionnement analogue au précédent, mais utilisant un algorithme agglomerative.
Une variable de configuration supplémentaire est disponible :
linkage
: le type de linkage à utiliser
DBSCAN
Cette partie se lance à l'aide de la commande suivante :
python3 tp3-dbscan.py
Ce script possède un fonctionnement analogue aux précédents, mais utilisant un algorithme DBSCAN.
Mean Shift
Nous devions choisir un autre algorithme en plus des trois précédents. Nous avons donc choisi Mean Shift. Cette partie se lance à l'aide de la commande suivante :
python3 tp4-mean-shift.py
Ce script possède un fonctionnement analogue aux précédents, mais utilisant un algorithme de Mean Shift.
Jeu artificiel
Cette partie contient 2 scripts. Le premier sert à trouver un epsilon adapté pour dbscan et se lance avec la commande suivante :
python3 tp5-preprocessing.py
Le deuxième script applique les quatre algorithmes précédents sur une liste de jeux de données et se lance avec la commande suivante :
python3 tp5-artificial-dataset.py
Deux variables de configuration supplémentaire sont disponibles :
dataset_name_list
: la liste de datasets à utilisereps_list
: la liste des epsilon que dbscan doit utiliser pour chaque dataset
Jeu réel
Cette dernière partie se comporte comme la précédente, mais sur un jeu de donnée réel. Un script de pre processing pour trouver le bon epsilon est donc disponible et se lance en utilisant la commande suivante :
python3 tp6-preprocessing.py
Le dernier script permet de lancer les quatre algorithmes précédents sur le jeu de donnée réel, lu depuis un fichier csv. Le script va tout d'abord extraire des colonnes pour réduire le nombre de dimensions de ce jeu de donnée. Le script peut être lancé en utilisant la commande suivante :
python3 tp6-real-dataset.py
Plusieurs variables de configuration supplémentaire sont disponibles :
eps
: la valeur d'epsilon à utiliser pour dbscan, identifiée avec le scripttp6-preprocessing.py
first_column
: la première colonne à considérer pour l'extraction du csvlast_column
: la dernière colonne à considérer pour l'extraction du csv