Chargement et analyse des données
La phase de Data Understanding
Comme vu dans le chapitre Le Machine Learning : vue d’ensemble, la méthode CRISP-DM possède six phases. La première, nommée Business Understanding, n’est pas une phase technique mais métier. Elle consiste à comprendre les besoins du client, interne ou externe, au travers d’ateliers. Il s’agit donc de définir la tâche à effectuer, les facteurs de succès, les ressources disponibles, les contraintes, etc.
La phase suivante est nommée Data Understanding. Elle comprend trois étapes, chacune consistant à produire un livrable :
-
La carte d’identité du ou des datasets.
-
La description des champs.
-
L’analyse statistique de chaque champ.
Pour réaliser celles-ci, il est nécessaire de charger les données et de les analyser finement.
Ce chapitre va donc détailler chacune de ces étapes et les outils de la stack technique correspondant.
La compréhension des données est une phase d’analyse, et non de modification de celles-ci. Les seules manipulations autorisées à ce niveau sont celles nécessaires au chargement, au formatage et à la modification du type de données pour une meilleure analyse. Il est ainsi possible de modifier le séparateur décimal, dans le cadre du formatage.
Chargement des données
La première action à réaliser est de charger les données dans le notebook Jupyter. Pour cela, il existe différentes méthodes Pandas de la forme read_xxx.
Celles-ci permettent actuellement de lire des données aux formats suivants : pickle, CSV, FWF (fixed-witdth), table (générique), clipboard, Excel, JSON, HTML, HDFS, feather, parquet, ORC, SAS, SPSS, SQL, Google BigQuery et STATA. Cette liste est susceptible de s’allonger.
Pour lire les datasets Iris et Titanic (au format CSV), la méthode est read_csv :
import pandas as pd
iris_df = pd.read_csv("iris.csv")
titanic_df = pd.read_csv("titanic_train.csv")
Pour voir un aperçu des DataFrame chargés et vérifier ainsi le bon chargement, il suffit d’utiliser la fonction head. Il est possible d’ajouter un nombre en paramètre indiquant le nombre de lignes à afficher, sinon ce sont les cinq premières lignes qui s’affichent par défaut.
iris_df.head()
Ce qui permet d’obtenir :
![images/ML2_4.png](https://www.eni-training.com/download/66679f01-1608-4eb3-9863-a168355cac28/images/ML2_4.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Lorsque le fichier est d’un format plus complexe ou moins bien formaté qu’un fichier CSV, il est alors utile de regarder les nombreuses options pour charger le fichier.
Pour le dataset Boston, le fichier est ainsi un TXT. Son format est donc libre. Dans le cas de ce dataset, il contient des colonnes de taille fixe, séparées...
Création de la carte d’identité du dataset
Une fois le chargement fait, l’étape suivante consiste à créer la carte d’identité du dataset. Celle-ci est importante car elle va indiquer les informations globales sur les données qui seront ensuite utilisées pour le processus.
Elle comprend, sans s’y limiter :
-
le nom du dataset : dans le cas où il y a plusieurs fichiers, cela permet de savoir exactement lesquels ont été utilisés ;
-
sa provenance : il s’agit à la fois de la source de données (base de données, fichier plat…) et de la date de l’extraction. En fonction de ces informations, la qualité des données et leur correspondance avec la tâche de Machine Learning à faire peuvent être remises en cause, par exemple avec l’utilisation de données trop anciennes ;
-
sa taille : elle permet de s’assurer lors de futurs chargements que toutes les données ont bien été prises en compte. Il faut donc indiquer à la fois le nombre d’enregistrements, le nombre d’attributs et le poids du fichier le cas échéant ;
-
son formatage : il permet de mieux comprendre la structure du fichier pour faciliter son chargement si celui-ci doit être refait ultérieurement (encodage et séparateurs par exemple) ;...
Description des champs
Une fois le dataset décrit, l’étape suivante de Data Understanding consiste à décrire chaque champ, généralement sous la forme d’un tableau. Celui-ci permet de comprendre exactement chaque variable : son sens, mais aussi ce qui est attendu comme valeurs, et s’il y a des limitations connues.
Sans ces informations, les variables perdent leur sens et aucun modèle ne peut ensuite être mis en production de manière fiable.
Il y a quelques années, un article médical a été publié présentant un lien entre le traitement à donner à des malades du cancer et la présence de séquences particulières dans leur génome. Il s’agissait d’une avancée impressionnante. Cependant, l’article a dû être retiré. En effet, les auteurs avaient inversé le sens 0 ou 1 d’une variable (présence ou absence), et leur découverte n’avait donc aucun sens dans le meilleur des cas et au pire risquait d’atteindre à la vie des patients qui suivraient les recommandations de leur modèle.
Cela consiste à donner pour chacun :
-
son nom, tel que présent dans le dataset ;
-
son type : entier, réel, chaîne de caractères, date… ;
-
son format s’il est spécifique : pour les dates par exemple, il s’agit d’indiquer le format, en particulier entre JJ/MM et MM/JJ ;
-
sa description : il s’agit de ce que la variable indique exactement. Pour les processus industriels, elle est souvent accompagnée d’un schéma avec indication du lieu de prise des différentes mesures ;
-
son unité : elle sera très importante pour vérifier la correspondance entre le contenu de la variable et son sens, par exemple s’il s’agit d’une température d’eau liquide en °C, elle doit être comprise à pression ambiante entre 0 et 100 ;
-
la présence ou non de données manquantes et, le cas échéant, le nombre de données manquantes ;
-
ses limites attendues, qui découlent des informations précédentes ;
-
et toute autre information utile si besoin.
Pandas permet d’obtenir certaines de ces informations :...
Statistiques descriptives sur les champs
La dernière étape de la phase de Data Understanding consiste à analyser chacun des champs de manière statistique. Les analyses dépendent du type de la variable.
Cette analyse permet une compréhension plus fine des données, ce qui mène à des choix plus éclairés sur les préparations à faire avant la modélisation. Si cette phase peut sembler rébarbative, elle est néanmoins nécessaire.
1. Types de données
Dans le chapitre Le Machine Learning : vue d’ensemble, quatre types de données ont été définis :
-
Variables catégorielles : chaque valeur représente une catégorie.
-
Nominales : il n’y a pas d’ordre spécifique entre les catégories.
-
Ordinales : les variables suivent un ordre.
-
Variables numériques : chaque valeur est un nombre.
-
Continues : toutes les valeurs sont potentiellement acceptables (variables réelles).
-
Discrètes : seules certaines valeurs (entières généralement) sont autorisées.
Pour chaque variable, il faudra produire deux informations :
-
Une analyse statistique, sous forme textuelle ou tabulaire.
-
Une visualisation des données.
Les outils à utiliser sont cependant différents en fonction du type de la variable (catégorielle ou numérique).
2. Analyse des données numériques
Les données numériques sont les plus classiques en statistiques. Leur étude consiste à définir à la fois des indicateurs de tendance centrale et de dispersion.
Les principaux indicateurs de tendance centrale sont la moyenne et la médiane. Ils permettent de savoir où se trouvent les données dans l’espace des possibles.
Les indicateurs de dispersion comprennent le minimum et le maximum, l’écart-type, la variance et les différents quantiles. Leur rôle est d’aider à mieux comprendre la répartition des données autour des indicateurs de tendance centrale.
Pour du Machine Learning, il est important que les données numériques suivent le plus possible un profil de gaussienne, dite aussi "courbe en cloche", avec un écart-type plutôt faible....
Préparer la phase suivante
Au cours de cette phase d’analyse des données, plusieurs étapes ont été faites :
-
Le chargement des données.
-
La création de la carte d’identité du dataset.
-
La description des champs.
-
L’analyse statistique de chacun des champs : statistiques univariées et bivariées, ainsi que des graphiques.
Il y a plusieurs raisons de bien documenter tout ce qui a été fait dans cette étape.
Tout d’abord, cela peut permettre de mettre en avant de potentiels problèmes de qualité des données, voire même d’arrêter le projet si ceux-ci sont trop impactants (comme des données obsolètes).
De plus, cela permet de tracer l’origine des données et leur sens, ce qui peut faire gagner du temps lors des phases suivantes.
Enfin, l’analyse statistique permet de décider ce qu’il faudra faire de chacun des champs en phase de data préparation : le supprimer, le modifier, le conserver, etc. Il est donc primordial de conserver non seulement les analyses mais aussi les conclusions qui en découlent.
Dans le cas d’une présentation à un client, il est intéressant de ne conserver que les résultats qui soulèvent des questions potentielles, de manière à se concentrer sur ce qui paraît le plus important.
Avec...