Azure ML, préparer les données


Cet article fait partie d’une série de posts destinés à expliquer le fonctionnement de Azure ML.

Vous pouvez retrouver les précédents articles en cliquant sur ces liens:

 

 

Les données à analyser auront le plus souvent besoin d’être préparées, pour pouvoir être traitées par les algorithmes de ML. L’interface graphique de ML Studio procure les outils de base pour réaliser ces tâches.

 

Lorsque ces outils se révèlent insuffisants il reste possible d’utiliser des scripts R ou Python.

 

 

Traiter les données manquantes

 

 

Cette tâche fait partie des plus communes en Data Science et ML.

Lorsque des valeurs manquent, il faudra soit supprimer les lignes ou colonnes contenant ces valeurs manquantes, soit remplacer ces dernières par une valeur arbitraire (moyenne, médiane,valeur personnalisée,valeur probalisée.)

 

La première étape consiste à visualiser votre Dataset pour identifier les colonnes contenant des valeurs manquantes.

 

 

Puis déposer un module Clean missing Data sur le Canvas, en connectant les ports, avant de sélectionner les colonnes à traiter.

 

 

 

Comme le traitement s’effectue par colonne, ML Studio offre la possibilité de borner le nombre de valeurs manquantes conditionnant l’exécution du traitement :

 

  • Nombre de valeurs manquantes minimum
  • Nombre de valeurs manquantes maximum

 

 

 

Avant de sélectionner le mode de nettoyage des valeurs manquantes.

Si vous cochez la case Generate missing value indicator column, la colonne contenant des valeurs manquantes ne sera pas modifiée, mais une nouvelle colonne sera ajoutée avec les manquants modifiés.

 

 

Supprimer les doublons

 

 

Le module Remove Duplicate Rows supprime les lignes en doublon, en fonction des colonnes sélectionnées.

La ligne sera supprimée lorsque toutes les valeurs des colonnes sélectionnées seront égales.

 

 

Le module contient aussi une case à cocher Retain First Duplicate row, pour choisir quelle ligne conserver lorsque plusieurs lignes sont doublonnées (première ligne ou dernière ligne.)

 

 

Selectionner des colonnes

 

 

Vous pouvez utiliser le module Select Columns in Dataset lorsque vous devez sélectionner des colonnes spécifiques pour votre analyse.

La sélection des colonnes s’effectue soit par nom, soit par règle :

 

 

Dans ce dernier cas, il est possible de choisir d’inclure ou d’exclure un certain nombre de colonnes :

 

 

Metadatas

 

 

Le module Edit Metadata permet de modifier les Méta-données d’une ou de plusieurs colonnes dans un Dataset.

 

 

Il est ainsi possible de changer le type des données en :

  • Texte
  • Entier
  • Décimal
  • Date
  • Temps

 

Il est aussi possible de marquer les données comme catégorielles ou non catégorielles, et de marquer une colonne comme étant la colonne des valeurs cibles (Label).

 

Enfin, ce module permet de changer le nom d’une colonne.

 

 

Combiner deux Dataset

 

 

Le module Add Columns permet de prendre deux Dataset contenant le même nombre de lignes, en entrée pour les concaténer.

 

 

A titre d’exemple, déposez sur le canvas deux Dataset Brest Cancer Info et Breast Cancer Features, ainsi que le module Add Columns.

 

 

Les deux Dataset ont tous les deux 10294 lignes.

 

 

Le résultat est un Dataset contenant le même nombre de lignes, mais 30 Colonnes.

 

Pour ajouter des lignes à un Dataset, il  faudre utiliser le module Add Rows, qui necessite deux Dataset contenant le même nombre de colonnes.

 

 

Joindre des Dataset

 

 

Pour réaliser une jonction entre deux Dataset vous devrez utiliser le module Join Data.

Ce dernier prend deux Dataset en entrée, et réalise une jonction comme on peut le faire en SQL, avec la commande JOIN.

 

 

Le volet de droite permet de sélectionner les colonnes du premier Dataset (Dataset de gauche ou L) et du second Dataset (Dataset de droite ou R) qui présentent des données communes (Numéro de client, code produit etc…), ces données communes sont nommées clés.

 

Le résultat sera un nouveau Dataset comprenant toutes les colonnes des deux tables, mais un nombre réduit de lignes, qui dépendra du type de jointure sélectionné.

 

 

Inner Join : Seules les lignes dont les clés sont communes aux deux Dataset (les valeurs existent dans les deux tables.)

 

Left Outer Join:

Une jointure externe gauche renvoie des lignes jointes pour toutes les lignes de la table gauche. Lorsqu’une ligne de la table de gauche n’a aucune ligne correspondante dans la table de droite, la ligne renvoyée contient des valeurs manquantes pour toutes les colonnes provenant de la table de droite, sauf si vous spécifiez une valeur de remplacement pour les valeurs manquantes.

 

Full Outer Join :

Une jointure externe complète renvoie toutes les lignes de la table de gauche (Dataset1) et de la table de droite (Dataset2).

Pour chaque ligne de la table de gauche pour laquelle aucune ligne ne correspond à la table de droite, les résultats de la jointure incluent une ligne contenant les valeurs manquantes de la table de droite.

Pour chaque ligne du tableau de droite pour laquelle aucune ligne correspondante ne figure dans la table de gauche, les résultats de la jointure incluent une ligne contenant les valeurs manquantes pour toutes les colonnes de la table de gauche.

 

Left Semi Join :

Une semi-jointure gauche ne renvoie que les valeurs de la table de gauche lorsque les valeurs des colonnes de clés correspondent.

 

 

Diviser un Dataset

 

 

Dans de nombreuses expériences, vous devrez séparer vos Dataset en deux parties, pour obtenir un Dataset d’entrainement et un Dataset de Test.

 

Le module à utiliser est split Data.

 

 

Le panneau de droite permet de préciser comment le Dataset doit être divisé, et quel pourcentage utiliser pour la division.

La case à cocher Randomized split, permet de mélanger le Dataset préalablement à la division, ce qui est fortement recommandé pour effectuer un échantillonage correct.

Ainsi, si vous sélctionnez Split Rows et 0.8, votre Dataset sera divisé en deux, le premier comprenant 80% des lignes, le second 20 %.

 

 

Il existe d’autre options que Split Rows :

  • Recommander Split, pour entrainer un modèle de recommandation;
  • Regular expression, pour diviser le Dataset selon le résultat d’une expression régulière appliqué à une colonne (par exemple présence d’un ensemble de caractères spécifiques);
  • Relative expression : Permet de réaliser des filtres sur des valeurs numériques.

 

Random seed permet de rendre les résultats reproductibles.

 

Enfin, Stratified split permet regrouper les données par groupes (il faudra sélectionner une colonne contenant les clés de regroupement, par exemple Age), avant d’effectuer la division.

 

 

Réaliser des transformations avec SQL

 

Le module Apply SQL Transformation, permet de lancer des requêtes sur SQL sur un mawimum de trois Dataset.

 

 

 

Le premier Dataset prend le nom de t1, le secon t2, le troisième t3.

 

 

Dans le volet de droite, vous pouvez saisir une requête SQL (selon la syntaxe SQLite).

Ce module est très pratique pour réaliser des sélections, modifier et ajouter des données, ajouter des colonnes etc..

Par exemple, pour changer le nom d’une valeur :

 

SELECT CASE colonne2 WHEN ‘yes’ THEN ‘oui’ ELSE ‘non’ END AS [colonne2], * FROM t1

 

Il est possible d’agrandir la fenêtre de saisie en cliquant sur l’icone surlignée en jaune.

 

Dans cet article vous avez appris comment réaliser les principales transformations sur un Dataset, à partir de l’interface graphique de ML STUDIO.

la prochaine étape va consister à approfondir ces connaissances avec les méthodes avancées de transformation.

 

 

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *