# 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 :

```shell
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 :

```shell
python3 -m venv ./venv
pip install -r ./requirements.txt
```

Chaque scripte suppose que des jeux de données venant du [benchmark de deric](https://github.com/deric/clustering-benchmark) 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 à utiliser
- `path`: 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 :
```shell
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 :
```shell
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 :
```shell
python3 tp2-dbscan.py
```

Ce script possède un fonctionnement analogue aux précédents, mais utilisant un algorithme DBSCAN.
