Modèles de classification (et ses résultats) entrainés sur certains ressources CSV de data.gouv.fr

## Contexte
Data.gouv.fr (DGF) contient des milliers de ressources de type CSV. Déterminer à la main quels sont les ressources qui pourront être utiles pour faire des explications/tutoriels en Machine Learning (ML) avec des données ouvertes semble une tache monumentale. En outre, pouvoir utiliser des données ouvertes présente une grande opportunité pour familiariser les utilisateurs avec la démarche open data et au même temps promouvoir les réutilisations de ces données.

## Méthodologie

Afin d’éventuellement accélérer le processus de sélection des datasets pertinents pour le ML, dans ce dataset nous présentons pour chacun de 5479 fichiers CSV analysés (catalogués dans data.gouv.fr), une liste des modèles entraînés sur chacune des variables catégorielles détectées dans chaque CSV. Pour l'instant on se concentre que sur des modèles de classification supervisée. Brièvement, l'analyse consiste en détecter les colonnes catégorielles de chaque dataset, tester plusieurs modèles de classification en ayant chaque une de ces colonnes comme variable à expliquer. Finalement, nous sauvegardons les détails de chaque modèle testé ainsi que ses résultats en termes de performance.

```
Pour chaque CSV:
    Déterminer les colonnes catégorielles ;
    Pour chaque variable catégorielle (ou colonnes catégorielles):
        a. Faire tourner un ensemble des modèles d'apprentissage de type "baseline" (GaussianNaiveBayes, LogisticRegression, DecisionTrees, ...) ;
        b. Récupérer les performances issues de la validation, basée sur des métriques de performance: (accuracy, recall_macro, precision_macro, f1_macro, roc_auc)
    Sauvegarder ces infos dans un CSV 
```
Cette méthodologie est absolument basé sur la librairie [dabl: The data analysis baseline library](https://dabl.github.io/dev/).

## Output
Les CSVs de ce dataset sont organisés par producteur du dataset. Le nom de chaque fichier CSV suive le format `id-dataset--id-ressource.csv`.
Chaque CSV généré peut contenir ces colonnes :

`csv_id`: Id du dataset DGF suivi par l'Id de la ressource (separés par `--`) ;
`task`: Task ML (que classification pour l'instant) ;
`algorithm`: Nom de l’algorithme testé ainsi que ça configuration initiale ;
`target_col` : Noms de la colonne catégorielle testée ;
`nb_features`: Nombre des features utilisés dans le modèle ;
`features_names`: Noms des features utilisés ;
`classes` : Noms des classes prédites ; 
`nb_classes` : Nombre des classes prédites ;
`nb_lines`: Nombre des lignes dans le dataset original ;
`nb_samples`: Nombre des lignes dans l’échantillon testé ;
`date` : Date de l'analyse ;
`accuracy`
`recall_macro`
`precision_macro`
`f1_macro`
`average_precision`
`roc_auc`
`avg_scores` : Moyenne des scores calculés ;

## Code
Le code pour produire ce dataset se trouve [sur](https://github.com/psorianom/mlearnable-datasets-detective/tree/master).

## TODO
1. Lancer la même analyse pour la régression (avec des valeurs continus) 
2. Standardiser les colonnes de tout les CSV produits (le même entête pour tous les CSVs)
3. Ajouter une variable qui affiche la corrélation entre les colonnes.

Mots-clés : classification,datascience,machine-learning