Partager via


Tutoriel : charger, accéder et explorer vos données dans Azure Machine Learning

S’APPLIQUE À : Kit de développement logiciel (SDK) Python azure-ai-ml v2 (actuelle)

Ce didacticiel vous montre comment effectuer les opérations suivantes :

  • Charger vos données sur un stockage en ligne
  • Créer une ressource de données Azure Machine Learning
  • Accéder à vos données dans un notebook pour le développement interactif
  • Créer de nouvelles versions de ressources de données

Un projet Machine Learning démarre généralement avec l’analyse exploratoire des données (EDA), le prétraitement des données (nettoyage, ingénierie de caractéristiques) et la création de prototypes de modèles Machine Learning pour valider les hypothèses. Cette phase de projet de prototypage est hautement interactive. Il se prête au développement dans un environnement de développement intégré (IDE) ou un notebook Jupyter, avec une console interactive Python. Ce tutoriel décrit ces idées.

Cette vidéo montre comment démarrer dans Azure Machine Learning studio, afin que vous puissiez suivre les étapes du didacticiel. La vidéo montre comment créer un notebook, cloner le notebook, créer une instance de calcul et télécharger les données nécessaires pour le tutoriel. Les étapes sont également décrites dans les sections suivantes.

Prérequis

  1. Vous avez besoin d’un espace de travail pour utiliser Azure Machine Learning. Si vous n’en avez pas, suivez la procédure Créer les ressources nécessaires pour commencer pour créer un espace de travail et en savoir plus sur son utilisation.

  2. Connectez-vous au studio et sélectionnez votre espace de travail s’il n’est pas déjà ouvert.

  3. Ouvrez ou créez un notebook dans votre espace de travail :

    • Si vous souhaitez copier et coller du code dans des cellules, créez un notebook.
    • Vous pouvez également ouvrir tutorials/get-started-notebooks/explore-data.ipynb dans la section Échantillons de Studio. Sélectionnez ensuite Cloner pour ajouter le notebook à vos Fichiers. Pour trouver des exemples de notebooks, consultez Apprendre à partir d’exemples de notebooks.

Définir votre noyau et ouvrir dans Visual Studio Code (VS Code)

  1. Dans la barre supérieure au-dessus de votre notebook ouvert, créez une instance de calcul si vous n’en avez pas déjà une.

    Capture d’écran montrant comment créer une instance de calcul.

  2. Si l’instance de calcul est arrêtée, sélectionnez Démarrer le calcul et attendez qu’elle s’exécute.

    Capture d’écran montrant comment démarrer une instance de calcul arrêtée.

  3. Attendez que l’instance de calcul soit en cours d’exécution. Vérifiez ensuite que le noyau, situé en haut à droite, est Python 3.10 - SDK v2. Si ce n’est pas le cas, utilisez la liste déroulante pour sélectionner ce noyau.

    Capture d’écran montrant comment définir le noyau.

    Si vous ne voyez pas ce noyau, vérifiez que votre instance de calcul est en cours d’exécution. S’il est présent, sélectionnez le bouton Actualiser en haut à droite du notebook.

  4. Si une bannière vous indique que vous devez être authentifié, sélectionnez Authentifier.

  5. Vous pouvez exécuter le notebook ici, ou l’ouvrir dans VS Code pour un environnement de développement intégré (IDE) complet avec la puissance des ressources Azure Machine Learning. Sélectionnez Ouvrir dans VS Code, puis l’option web ou de bureau. Lors d’un tel lancement, VS Code est attaché à votre instance de calcul, au noyau et au système de fichiers de l’espace de travail.

    Capture d’écran montrant comment ouvrir le notebook dans VS Code.

Important

Le reste de ce tutoriel contient des cellules du notebook du tutoriel. Copiez-les, et collez-les dans votre nouveau notebook, ou accédez maintenant au notebook si vous l’avez cloné.

Télécharger les données utilisées dans ce tutoriel

Pour l’ingestion de données, Azure Data Explorer gère les données brutes dans ces formats. Ce tutoriel utilise cet échantillon de données de cartes de crédit client au format CSV. Les étapes se poursuivent dans une ressource Azure Machine Learning. Dans cette ressource, nous allons créer un dossier local, avec le nom suggéré de données directement sous le dossier où se trouve ce notebook.

Remarque

Ce tutoriel dépend des données placées dans un emplacement de dossier de ressources Azure Machine Learning. Pour ce tutoriel, « local » désigne un emplacement de dossier dans cette ressource Azure Machine Learning.

  1. Sélectionnez Ouvrir le terminal sous les trois points, comme illustré dans cette image :

    Capture d’écran montrant l’outil d’ouverture de terminal dans la barre d’outils du notebook.

  2. La fenêtre du terminal s’ouvre dans un nouvel onglet.

  3. Veillez à cd (Modifier le répertoire) dans le même dossier que celui où se trouve ce notebook. Par exemple, si le notebook se trouve dans un dossier nommé get-started-notebooks :

    cd get-started-notebooks    #  modify this to the path where your notebook is located
    
  4. Entrez ces commandes dans la fenêtre de terminal pour copier les données dans votre instance de calcul :

    mkdir data
    cd data                     # the sub-folder where you'll store the data
    wget https://azuremlexamples.blob.core.windows.net/datasets/credit_card/default_of_credit_card_clients.csv
    
  5. Vous pouvez maintenant fermer la fenêtre du terminal.

Pour plus d’informations sur les données dans le référentiel UC Irvine Machine Learning, consultez cette ressource.

Créez une poignée dans l’espace de travail

Avant d’explorer le code, il faut trouver un moyen de référencer l’espace de travail. Vous allez créer ml_client pour un descripteur vers l’espace de travail. Vous utilisez ensuite ml_client pour gérer les ressources et les travaux.

Dans la cellule suivante, entrez votre ID d’abonnement, le nom du groupe de ressources et le nom de l’espace de travail. Pour rechercher ces valeurs :

  1. Dans la barre d’outils supérieure droite d'Azure Machine Learning studio, sélectionnez le nom de votre espace de travail.
  2. Copiez la valeur de l’espace de travail, du groupe de ressources et de l’ID d’abonnement dans le code.
  3. Vous devez copier les valeurs une à une, fermer la zone et coller, puis passer à la suivante.
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes

# authenticate
credential = DefaultAzureCredential()

# Get a handle to the workspace
ml_client = MLClient(
    credential=credential,
    subscription_id="<SUBSCRIPTION_ID>",
    resource_group_name="<RESOURCE_GROUP>",
    workspace_name="<AML_WORKSPACE_NAME>",
)

Remarque

La création de MLClient n’établit pas de connexion à l’espace de travail. L’initialisation du client est différée. Il attend la première fois qu'il doit passer un appel. Cela se produit dans la cellule de code suivante.

Charger des données sur un stockage en ligne

Azure Machine Learning utilise des URI (Uniform Resource Identifier), qui pointent vers des emplacements de stockage dans le cloud. Un URI facilite l’accès aux données dans les notebooks et les tâches. Les URI de données ont un format similaire aux URL que vous utilisez dans votre navigateur pour accéder aux pages web. Par exemple :

  • Accédez aux données à partir d’un serveur https public : https://<account_name>.blob.core.windows.net/<container_name>/<folder>/<file>
  • Accédez aux données à partir d’Azure Data Lake Gen 2 : abfss://<file_system>@<account_name>.dfs.core.windows.net/<folder>/<file>

Une ressource de données Azure ML est similaire aux signets de navigateur web (favoris). Au lieu de mémoriser de longs chemins de stockage (URI) qui pointent vers vos données les plus fréquemment utilisées, vous pouvez créer une ressource de données, puis y accéder avec un nom convivial.

En créant une ressource de données, vous créez également une référence à l’emplacement de la source de données, ainsi qu’une copie de ses métadonnées. Étant donné que les données restent à leur emplacement existant, aucun coût de stockage supplémentaire n’est appliqué et l’intégrité de la source de données est assurée. Vous pouvez créer des ressources de données à partir de magasins de données Azure ML, d’un Stockage Azure, d’URL publiques et de fichiers locaux.

Conseil

Pour les chargements de données de plus petite taille, la création de ressources de données Azure Machine Learning fonctionne bien pour les chargements de données à partir de ressources d’ordinateurs locaux vers le stockage en ligne. Cette approche permet d’éviter l’utilisation d’outils ou d’utilitaires supplémentaires. Toutefois, un chargement de données de plus grande taille peut nécessiter l’utilisation d’un outil ou d’un utilitaire dédié, par exemple, azcopy. L’outil de ligne de commande azcopy permet de déplacer des données vers et depuis le Stockage Azure. Pour plus d’informations sur azcopy, consultez cette ressource.

La cellule de notebook suivante crée la ressource de données. L’exemple de code charge le fichier de données brutes dans la ressource de stockage en ligne désignée.

Chaque fois que vous créez une ressource de données, vous avez besoin d’une version unique pour celle-ci. Si la version existe déjà, vous obtiendrez une erreur. Dans ce code, nous utilisons l’« initial » pour la première lecture des données. Si cette version existe déjà, nous ne la recréons pas.

Vous pouvez également omettre le paramètre version. Dans ce cas, un numéro de version est généré pour vous, en commençant par 1, puis en l’incrémentant par la suite.

Ce tutoriel utilise le nom « initial » comme première version. Le tutoriel Créer des pipelines Machine Learning de production utilise également cette version des données. Nous utilisons donc ici une valeur que vous verrez à nouveau dans ce tutoriel.

from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes

# update the 'my_path' variable to match the location of where you downloaded the data on your
# local filesystem

my_path = "./data/default_of_credit_card_clients.csv"
# set the version number of the data asset
v1 = "initial"

my_data = Data(
    name="credit-card",
    version=v1,
    description="Credit card data",
    path=my_path,
    type=AssetTypes.URI_FILE,
)

## create data asset if it doesn't already exist:
try:
    data_asset = ml_client.data.get(name="credit-card", version=v1)
    print(
        f"Data asset already exists. Name: {my_data.name}, version: {my_data.version}"
    )
except:
    ml_client.data.create_or_update(my_data)
    print(f"Data asset created. Name: {my_data.name}, version: {my_data.version}")

Pour examiner les données chargées, sélectionnez Données sur la gauche. Les données sont chargées et une ressource de données est créée :

Capture d’écran montrant les données dans Studio.

Ces données sont nommées carte-crédit, et dans l’onglet Ressources de données, nous pouvons les voir dans la colonne Nom.

Un magasin de données Azure Machine Learning est une référence à un compte de stockage existant sur Azure. Un magasin de données offre les avantages suivants :

  1. Une API commune et facile à utiliser pour interagir avec différents types de stockage

    • Azure Data Lake Storage
    • Blob
    • Fichiers

    et les méthodes d’authentification.

  2. Un moyen plus facile de découvrir des magasins de données utiles, lors d’un travail d’équipe.

  3. Dans vos scripts, un moyen de masquer les informations de connexion pour l’accès aux données basées sur les informations d’identification (principal de service/SAS/clé).

Accéder à vos données dans un notebook

Pandas prend directement en charge les URI : cet exemple montre comment lire un fichier CSV à partir d’un magasin de données Azure Machine Learning :

import pandas as pd

df = pd.read_csv("azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<workspace_name>/datastores/<datastore_name>/paths/<folder>/<filename>.csv")

Toutefois, comme mentionné précédemment, il peut devenir difficile de mémoriser ces URI. En outre, vous devez remplacer manuellement toutes les valeurs de <substring> dans la commande pd.read_csv par les valeurs réelles de vos ressources.

Vous souhaiterez créer des ressources de données pour les données fréquemment consultées. Voici un moyen plus simple d’accéder au fichier CSV dans Pandas :

Important

Dans une cellule de notebook, exécutez ce code pour installer la bibliothèque Python azureml-fsspec dans votre noyau Jupyter :

%pip install -U azureml-fsspec
import pandas as pd

# get a handle of the data asset and print the URI
data_asset = ml_client.data.get(name="credit-card", version=v1)
print(f"Data asset URI: {data_asset.path}")

# read into pandas - note that you will see 2 headers in your data frame - that is ok, for now

df = pd.read_csv(data_asset.path)
df.head()

Pour plus d’informations sur l’accès aux données dans un bloc-notes, consultez Accéder aux données à partir du stockage cloud Azure pendant le développement interactif.

Créer une nouvelle version de la ressource de données

Les données ont besoin d’un léger nettoyage pour les adapter à la formation d’un modèle Machine Learning. Il comprend :

  • deux en-têtes
  • une colonne d’ID client ; nous n’utiliserions pas cette fonctionnalité dans le Machine Learning
  • espaces dans le nom de la variable de réponse

De plus, comparé au format CSV, le format de fichier Parquet constitue un meilleur moyen de stocker ces données. Parquet offre une compression et conserve les schémas. Pour nettoyer les données et les stocker dans Parquet, utilisez :

# read in data again, this time using the 2nd row as the header
df = pd.read_csv(data_asset.path, header=1)
# rename column
df.rename(columns={"default payment next month": "default"}, inplace=True)
# remove ID column
df.drop("ID", axis=1, inplace=True)

# write file to filesystem
df.to_parquet("./data/cleaned-credit-card.parquet")

Ce tableau montre la structure des données dans le fichier .CSV originaldefault_of_credit_card_clients.csv téléchargé lors d’une étape précédente. Les données chargées contiennent 23 variables explicatives et 1 variable de réponse, comme illustré ici :

Nom(s) de colonne Type de variable Description
X1 Explications Montant du crédit accordé (dollar NT) : il comprend à la fois le crédit à la consommation individuel et le crédit familial (supplémentaire).
X2 Explications Sexe (1 = homme ; 2 = femme).
X3 Explications Éducation (1 = études supérieures ; 2 = université ; 3 = lycée ; 4 = autres).
X4 Explications État civil (1 = marié ; 2 = célibataire ; 3 = autres).
X5 Explications Âge (années).
X6-X11 Explications Historique des paiements antérieurs. Nous avons suivi les dossiers de paiements mensuels antérieurs (d’avril à septembre 2005). -1 = paiement intégral ; 1 = retard de paiement d’un mois ; 2 = retard de paiement de deux mois ; . . 8 = retard de paiement de huit mois ; 9 = retard de paiement de neuf mois et plus.
X12-17 Explications Montant des relevés de factures (en dollars NT) d’avril à septembre 2005.
X18-23 Explications Montant du paiement précédent (dollar NT) d’avril à septembre 2005.
O response Défaut de paiement (Oui = 1, Non = 0)

Créez ensuite une nouvelle version de la ressource de données (les données sont automatiquement chargées dans le stockage en ligne). Pour cette version, ajoutez une valeur de temps, afin qu’un numéro de version différent soit créé à chaque exécution de ce code.

from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes
import time

# Next, create a new *version* of the data asset (the data is automatically uploaded to cloud storage):
v2 = "cleaned" + time.strftime("%Y.%m.%d.%H%M%S", time.gmtime())
my_path = "./data/cleaned-credit-card.parquet"

# Define the data asset, and use tags to make it clear the asset can be used in training

my_data = Data(
    name="credit-card",
    version=v2,
    description="Default of credit card clients data.",
    tags={"training_data": "true", "format": "parquet"},
    path=my_path,
    type=AssetTypes.URI_FILE,
)

## create the data asset

my_data = ml_client.data.create_or_update(my_data)

print(f"Data asset created. Name: {my_data.name}, version: {my_data.version}")

Le fichier Parquet nettoyé est la dernière version de la source de données. Ce code affiche d’abord le jeu de résultats de version CSV, puis la version Parquet :

import pandas as pd

# get a handle of the data asset and print the URI
data_asset_v1 = ml_client.data.get(name="credit-card", version=v1)
data_asset_v2 = ml_client.data.get(name="credit-card", version=v2)

# print the v1 data
print(f"V1 Data asset URI: {data_asset_v1.path}")
v1df = pd.read_csv(data_asset_v1.path)
print(v1df.head(5))

# print the v2 data
print(
    "_____________________________________________________________________________________________________________\n"
)
print(f"V2 Data asset URI: {data_asset_v2.path}")
v2df = pd.read_parquet(data_asset_v2.path)
print(v2df.head(5))

Nettoyer les ressources

Si vous comptez suivre d’autres tutoriels, passez aux Étapes suivantes.

Arrêter l’instance de calcul

Si vous n’avez pas prévu de l’utiliser maintenant, arrêtez l’instance de calcul :

  1. Dans la zone de navigation gauche de Studio, sélectionnez Calculer.
  2. Sous les onglets supérieurs, sélectionnez Instances de calcul
  3. Sélectionnez l’instance de calcul dans la liste.
  4. Dans la barre d’outils supérieure, sélectionnez Arrêter.

Supprimer toutes les ressources

Important

Les ressources que vous avez créées peuvent être utilisées comme prérequis pour d’autres tutoriels d’Azure Machine Learning et des articles de procédure.

Si vous n’avez pas l’intention d’utiliser les ressources que vous avez créées, supprimez-les pour éviter des frais :

  1. Dans la zone de recherche du Portail Azure, saisissez Groupes de ressources, puis sélectionnez-le dans les résultats.

  2. Dans la liste, sélectionnez le groupe de ressources créé.

  3. Dans la page Vue d’ensemble, sélectionnez Supprimer le groupe de ressources.

    Capture d’écran des sélections permettant de supprimer un groupe de ressources dans le portail Azure.

  4. Entrez le nom du groupe de ressources. Puis sélectionnez Supprimer.

Étapes suivantes

Pour plus d’informations sur les ressources de données, consultez Créer des ressources de données.

Pour plus d’informations sur les magasins de données, consultez Créer des magasins de données.

Continuez avec le tutoriel suivant pour découvrir comment développer un script de formation :