Condividi tramite


Esercitazione: Caricare i dati, accedervi ed esplorarli in Azure Machine Learning

SI APPLICA A: Python SDK azure-ai-ml v2 (corrente)

In questa esercitazione si apprenderà come:

  • Caricare i dati nell'archiviazione nel cloud
  • Creare un asset di dati di Azure Machine Learning
  • Accedere ai dati in un notebook per lo sviluppo interattivo
  • Creare nuove versioni degli asset di dati

Un progetto di Machine Learning inizia in genere con l'analisi esplorativa dei dati, la pre-elaborazione dei dati (pulizia, ingegneria delle funzionalità) e la creazione di prototipi di modelli di Machine Learning per convalidare le ipotesi. Questa fase del progetto di creazione dei prototipi è altamente interattiva. Si presta allo sviluppo in un IDE o in un notebook di Jupyter, con una console interattiva Python. Questa esercitazione descrive queste idee.

Questo video illustra come iniziare a usare lo studio di Azure Machine Learning in modo da poter seguire i passaggi dell'esercitazione. Il video illustra come creare un notebook, clonare il notebook, creare un'istanza di ambiente di calcolo e scaricare i dati necessari per l'esercitazione. I passaggi sono descritti anche nelle sezioni seguenti.

Prerequisiti

  1. Per usare Azure Machine Learning, è prima di tutto necessaria un'area di lavoro. Se non è disponibile, completare Creare le risorse necessarie per iniziare creare un'area di lavoro e ottenere maggiori informazioni su come usarla.

  2. Accedere allo studio e selezionare l'area di lavoro se non è già aperta.

  3. Aprire o creare un notebook nell'area di lavoro:

    • Creare un nuovo notebook se si vuole copiare/incollare il codice nelle celle.
    • In alternativa, aprire tutorials/get-started-notebooks/explore-data.ipynb dalla sezione Esempi dello studio. Selezionare quindi Clona per aggiungere il notebook in File. Vedere dove trovare gli esempi.

Impostare il kernel

  1. Nella barra superiore sopra il notebook aperto creare un'istanza di ambiente di calcolo, se non ne è già disponibile una.

    Screenshot che mostra come creare un'istanza di calcolo.

  2. Se l'istanza di ambiente di calcolo è arrestata, selezionare Avviare ambiente di calcolo e attendere fino a quando non è in esecuzione.

    Screenshot che mostra come avviare il calcolo se viene arrestato.

  3. Assicurarsi che il kernel, visualizzato in alto a destra, sia Python 3.10 - SDK v2. In caso contrario, usare l'elenco a discesa per selezionare questo kernel.

    Screenshot che mostra come impostare il kernel.

  4. Se viene visualizzato un banner che indica che è necessario eseguire l'autenticazione, selezionare Autentica.

Importante

La parte rimanente di questa esercitazione contiene le celle del notebook dell'esercitazione. Copiarle e incollarle nel nuovo notebook oppure passare al notebook, se è stato clonato.

Scaricare i dati usati in questa esercitazione

Per l'inserimento dati, Esplora dati di Azure gestisce i dati non elaborati in questi formati. Questa esercitazione usa questo esempio di dati client di carte di credito in formato CSV. I vari passaggi vengono illustrati in una risorsa di Azure Machine Learning. In tale risorsa verrà creata una cartella locale con il nome suggerito di data direttamente nella cartella in cui si trova questo notebook.

Nota

Questa esercitazione dipende dai dati inseriti in un percorso di cartella della risorsa di Azure Machine Learning. Per questa esercitazione, 'locale' significa un percorso di cartella in tale risorsa di Azure Machine Learning.

  1. Selezionare Apri terminale sotto i tre puntini, come illustrato in questa immagine:

    Screenshot che mostra lo strumento del terminale aperto nella barra degli strumenti del notebook.

  2. La finestra del terminale viene aperta in una nuova scheda.

  3. Assicurarsi di passare concd alla stessa cartella in cui si trova questo notebook. Ad esempio, se il notebook si trova in una cartella denominata get-started-notebooks:

    cd get-started-notebooks    #  modify this to the path where your notebook is located
    
  4. Immettere questi comandi nella finestra del terminale per copiare i dati nell'istanza di ambiente di calcolo:

    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. È ora possibile chiudere la finestra del terminale.

Altre informazioni su questi dati sono disponibili nel repository di Machine Learning UCI.

Creare un handle all'area di lavoro

Prima di passare ai dettagli del codice, è necessario un modo per fare riferimento all'area di lavoro. Verrà creato un oggetto ml_client per un handle all'area di lavoro. Sarà quindi possibile usare ml_client per gestire le risorse e i processi.

Nella cella successiva immettere l'ID sottoscrizione, il nome del gruppo di risorse e il nome dell'area di lavoro. Per trovare questi valori:

  1. In alto a destra nella barra degli strumenti dello studio di Azure Machine Learning selezionare il nome dell'area di lavoro.
  2. Copiare i valori per l'area di lavoro, il gruppo di risorse e l'ID sottoscrizione nel codice.
  3. Sarà necessario copiare un valore, chiudere l'area e incollarlo, quindi tornare indietro per quello successivo.
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>",
)

Nota

La creazione di MLClient non comporta la connessione all'area di lavoro. L'inizializzazione del client avviene in modo differito e viene attesa la prima volta in cui è necessario effettuare una chiamata (questa operazione verrà eseguita nella cella di codice successiva).

Caricare i dati nell'archiviazione nel cloud

Azure Machine Learning usa URI (Uniform Resource Identifier) che puntano alle posizioni di archiviazione nel cloud. Un URI semplifica l'accesso ai dati nei notebook e nei processi. I formati degli URI dei dati sono simili agli URL Web usati nel Web browser per accedere alle pagine Web. Ad esempio:

  • Accedere ai dati dal server https pubblico: https://<account_name>.blob.core.windows.net/<container_name>/<folder>/<file>
  • Accedere ai dati da Azure Data Lake Gen 2: abfss://<file_system>@<account_name>.dfs.core.windows.net/<folder>/<file>

Un asset di dati di Azure Machine Learning è simile ai segnalibri (preferiti) del Web browser. Invece di ricordare percorsi di archiviazione lunghi (URI) che puntano ai dati usati più di frequente, è possibile creare un asset di dati e quindi accedere a tale asset con un nome descrittivo.

La creazione di un asset di dati crea anche un riferimento al percorso dell'origine dati, insieme a una copia dei relativi metadati. Poiché i dati rimangono nella posizione esistente, non vengono addebitati costi di archiviazione aggiuntivi e non si rischia l'integrità dell'origine dati. È possibile creare asset di dati da archivi dati di Azure Machine Learning, Archiviazione di Azure, URL pubblici e file locali.

Suggerimento

Per i caricamenti di dati di dimensioni inferiori, la creazione di asset di dati di Azure Machine Learning è ideale per i caricamenti di dati dalle risorse del computer locale all'archiviazione nel cloud. Questo approccio evita la necessità di strumenti o utilità aggiuntivi. Tuttavia, un caricamento di dati di dimensioni maggiori potrebbe richiedere un'utilità o uno strumento dedicato, ad esempio azcopy. Lo strumento da riga di comando azcopy sposta i dati da e verso Archiviazione di Azure. Altre informazioni su azcopy sono disponibili qui.

La cella del notebook successiva crea l'asset di dati. L'esempio di codice carica il file di dati non elaborato nella risorsa di archiviazione nel cloud designata.

Ogni volta che si crea un asset di dati, è necessaria una versione univoca. Se la versione esiste già, verrà visualizzato un errore. In questo codice viene usata la versione "initial" per la prima lettura dei dati. Se tale versione esiste già, eviteremo di crearla di nuovo.

È anche possibile omettere il parametro version. In questo caso verrà generato automaticamente un numero di versione, a partire da 1 con progressivi incrementi.

In questa esercitazione viene usato il nome "initial" come prima versione. Anche l'esercitazione Creare pipeline di Machine Learning di produzione userà questa versione dei dati, quindi qui viene usato un valore che comparirà di nuovo in tale esercitazione.

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}")

È possibile visualizzare i dati caricati selezionando Dati a sinistra. Si noterà che vengono caricati i dati e viene creato un asset di dati:

Screenshot che mostra i dati in Studio.

Questi dati sono denominati credit-card e sono visibili nella scheda Asset di dati nella colonna Nome. Questi dati vengono caricati nell'archivio dati predefinito dell'area di lavoro denominato workspaceblobstore, come indicato nella colonna Origine dati.

Un archivio dati di Azure Machine Learning funge da riferimento per un account di archiviazione esistente in Azure. Un archivio dati offre i vantaggi seguenti:

  1. Un'API comune e facile da usare per interagire con diversi tipi di archiviazione (BLOB/file/Azure Data Lake Storage) e metodi di autenticazione.
  2. Un modo più semplice per individuare archivi dati utili, quando si lavora come team.
  3. Negli script, un modo per nascondere le informazioni di connessione per l'accesso ai dati basato sulle credenziali (entità servizio/firma di accesso condiviso/chiave).

Accedere ai dati in un notebook

Pandas supporta direttamente gli URI. Questo esempio illustra come leggere un file CSV da un archivio dati di 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")

Tuttavia, come accennato in precedenza, può diventare difficile ricordare questi URI. Inoltre, è necessario sostituire manualmente tutti i valori <sottostringa> nel comando pd.read_csv con i valori reali per le risorse.

È consigliabile creare asset di dati per i dati a cui si accede di frequente. Ecco un modo più semplice per accedere al file CSV in Pandas:

Importante

In una cella del notebook eseguire questo codice per installare la libreria Python azureml-fsspec nel kernel 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()

Leggere Accedere ai dati dall'archiviazione nel cloud di Azure durante lo sviluppo interattivo per altre informazioni sull'accesso ai dati in un notebook.

Creare una nuova versione dell'asset di dati

Si potrebbe notare che i dati hanno bisogno di una pulizia leggera per adattarli al training di un modello di Machine Learning. Le sue caratteristiche sono:

  • due intestazioni
  • una colonna ID client; questa funzionalità non verrebbe usata in Machine Learning
  • spazi nel nome della variabile di risposta

Inoltre, rispetto al formato CSV, il formato di file Parquet diventa un modo migliore per archiviare questi dati. Parquet offre la compressione e mantiene lo schema. Pertanto, per pulire i dati e archiviarli in Parquet, usare:

# 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")

Questa tabella mostra la struttura dei dati nel file CSV originale default_of_credit_card_clients.csv scaricato in un passaggio precedente. I dati caricati contengono 23 variabili esplicative e 1 variabile di risposta, come illustrato di seguito:

Nomi delle colonne Tipo di variabile Descrizione
X1 Esplicativa Importo del credito specificato (dollaro NT): include sia il credito del singolo consumatore che il credito familiare (supplementare).
X2 Esplicativa Sesso (1 = maschio; 2 = femmina).
X3 Esplicativa Istruzione (1 = master; 2 = università; 3 = scuola superiore; 4 = altri).
X4 Esplicativa Stato coniugale (1 = sposato; 2 = single; 3 = altri).
X5 Esplicativa Età (anni).
X6-X11 Esplicativa Cronologia del pagamento precedente. Sono stati monitorati i record di pagamento mensili precedenti (da aprile a settembre 2005). -1 = pagamenti regolari; 1 = ritardo di pagamento per un mese; 2 = ritardo di pagamento per due mesi; . . .; 8 = ritardo di pagamento per otto mesi; 9 = ritardo di pagamento per nove mesi e superiori.
X12-17 Esplicativa Importo dell'estratto conto (dollaro NT) da aprile a settembre 2005.
X18-23 Esplicativa Importo del pagamento precedente (dollaro NT) da aprile a settembre 2005.
Y Response Pagamento predefinito (Sì = 1, No = 0)

Creare quindi una nuova versione dell'asset di dati (i dati vengono caricati automaticamente nell'archiviazione cloud). Per questa versione verrà aggiunto un valore di ora, in modo che ogni volta che viene eseguito questo codice venga creato un numero di versione diverso.

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}")

Il file Parquet pulito è l'origine dati della versione più recente. Questo codice mostra prima il set di risultati della versione CSV, quindi la versione 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))

Pulire le risorse

Se si prevede di continuare con altre esercitazioni, procedere direttamente a Passaggi successivi.

Arrestare l'istanza di ambiente di calcolo

Se non si prevede di usare subito l'istanza di ambiente di calcolo, arrestarla:

  1. Nell'area di spostamento a sinistra nello studio selezionare Ambiente di calcolo.
  2. Nelle schede in alto selezionare Istanze di ambiente di calcolo
  3. Selezionare l'istanza di ambiente di calcolo nell'elenco.
  4. Sulla barra degli strumenti in alto selezionare Arresta.

Eliminare tutte le risorse

Importante

Le risorse create possono essere usate come prerequisiti per altre esercitazioni e procedure dettagliate per Azure Machine Learning.

Se le risorse create non servono più, eliminarle per evitare addebiti:

  1. Nel portale di Azure fare clic su Gruppi di risorse all'estrema sinistra.

  2. Nell'elenco selezionare il gruppo di risorse creato.

  3. Selezionare Elimina gruppo di risorse.

    Screenshot delle opzioni da selezionare per eliminare un gruppo di risorse nel portale di Azure.

  4. Immettere il nome del gruppo di risorse. Quindi seleziona Elimina.

Passaggi successivi

Per altre informazioni sugli asset di dati, vedere Creare asset di dati.

Per altre informazioni sugli archivi dati, vedere Creare archivi dati.

Continuare con le esercitazioni per imparare a sviluppare uno script di training.