Självstudie: Ladda upp, komma åt och utforska dina data i Azure Machine Learning

GÄLLER FÖR: Python SDK azure-ai-ml v2 (aktuell)

I den här självstudiekursen får du lära du dig att:

  • Ladda upp dina data till molnlagring
  • Skapa en Azure Machine Learning-datatillgång
  • Få åtkomst till dina data i en notebook-fil för interaktiv utveckling
  • Skapa nya versioner av datatillgångar

Starten av ett maskininlärningsprojekt omfattar vanligtvis undersökande dataanalys (EDA), förbearbetning av data (rengöring, funktionsteknik) och skapandet av maskininlärningsmodellprototyper för att validera hypoteser. Den här prototypprojektfasen är mycket interaktiv. Den lämpar sig för utveckling i en IDE eller en Jupyter Notebook med en interaktiv Python-konsol. I den här självstudien beskrivs dessa idéer.

Den här videon visar hur du kommer igång i Azure Machine Learning-studio så att du kan följa stegen i självstudien. Videon visar hur du skapar en notebook-fil, klonar anteckningsboken, skapar en beräkningsinstans och laddar ned de data som behövs för självstudien. Stegen beskrivs också i följande avsnitt.

Förutsättningar

  1. Om du vill använda Azure Machine Learning behöver du först en arbetsyta. Om du inte har någon slutför du Skapa resurser som du behöver för att komma igång med att skapa en arbetsyta och lära dig mer om hur du använder den.

  2. Logga in i studion och välj din arbetsyta om den inte redan är öppen.

  3. Öppna eller skapa en notebook-fil på din arbetsyta:

    • Skapa en ny notebook-fil om du vill kopiera/klistra in kod i celler.
    • Eller öppna självstudier/komma igång-notebooks/explore-data.ipynb från avsnittet Exempel i studio. Välj sedan Klona för att lägga till anteckningsboken i dina filer. (Se var du hittar exempel.)

Ange din kernel

  1. I det övre fältet ovanför den öppnade notebook-filen skapar du en beräkningsinstans om du inte redan har en.

    Screenshot shows how to create a compute instance.

  2. Om beräkningsinstansen har stoppats väljer du Starta beräkning och väntar tills den körs.

    Screenshot shows how to start compute if it is stopped.

  3. Kontrollera att kerneln, som finns längst upp till höger, är Python 3.10 - SDK v2. Om inte använder du listrutan för att välja den här kerneln.

    Screenshot shows how to set the kernel.

  4. Om du ser en banderoll som säger att du måste autentiseras väljer du Autentisera.

Viktigt!

Resten av den här självstudien innehåller celler i notebook-filen för självstudien. Kopiera/klistra in dem i den nya notebook-filen eller växla till anteckningsboken nu om du klonade den.

Ladda ned data som används i den här självstudien

För datainmatning hanterar Azure Data Explorer rådata i dessa format. I den här självstudien används det här CSV-formatet för kreditkortsklientdataexempel. Vi ser hur stegen fortsätter i en Azure Machine Learning-resurs. I den resursen skapar vi en lokal mapp med det föreslagna namnet på data direkt under mappen där den här notebook-filen finns.

Kommentar

Den här självstudien beror på data som placeras på en plats för en Azure Machine Learning-resursmapp. I den här självstudien innebär "lokal" en mappplats i den Azure Machine Learning-resursen.

  1. Välj Öppna terminalen under de tre punkterna, som du ser i den här bilden:

    Screenshot shows open terminal tool in notebook toolbar.

  2. Terminalfönstret öppnas på en ny flik.

  3. Se till att du cd kommer till samma mapp där den här notebook-filen finns. Om notebook-filen till exempel finns i en mapp med namnet get-started-notebooks:

    cd get-started-notebooks    #  modify this to the path where your notebook is located
    
  4. Ange dessa kommandon i terminalfönstret för att kopiera data till din beräkningsinstans:

    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. Nu kan du stänga terminalfönstret.

Läs mer om dessa data på UCI Machine Learning-lagringsplatsen.

Skapa handtag till arbetsyta

Innan vi går in i koden behöver du ett sätt att referera till din arbetsyta. Du skapar ml_client för en referens till arbetsytan. Sedan använder ml_client du för att hantera resurser och jobb.

I nästa cell anger du ditt prenumerations-ID, resursgruppsnamn och arbetsytenamn. Så här hittar du följande värden:

  1. I det övre högra Azure Machine Learning-studio verktygsfältet väljer du namnet på arbetsytan.
  2. Kopiera värdet för arbetsyta, resursgrupp och prenumerations-ID till koden.
  3. Du måste kopiera ett värde, stänga området och klistra in och sedan komma tillbaka för nästa.
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>",
)

Kommentar

Att skapa MLClient ansluter inte till arbetsytan. Klientinitieringen är lat, den väntar första gången den behöver göra ett anrop (detta sker i nästa kodcell).

Ladda upp data till molnlagring

Azure Machine Learning använder URI:er (Uniform Resource Identifiers), som pekar på lagringsplatser i molnet. En URI gör det enkelt att komma åt data i notebook-filer och jobb. Data-URI-format liknar de webb-URL:er som du använder i webbläsaren för att få åtkomst till webbsidor. Till exempel:

  • Få åtkomst till data från en offentlig https-server: https://<account_name>.blob.core.windows.net/<container_name>/<folder>/<file>
  • Få åtkomst till data från Azure Data Lake Gen 2: abfss://<file_system>@<account_name>.dfs.core.windows.net/<folder>/<file>

En Azure Machine Learning-datatillgång liknar webbläsarbokmärken (favoriter). I stället för att komma ihåg långa lagringssökvägar (URI:er) som pekar på dina mest använda data kan du skapa en datatillgång och sedan komma åt tillgången med ett eget namn.

Skapande av datatillgång skapar också en referens till datakällans plats, tillsammans med en kopia av dess metadata. Eftersom data finns kvar på den befintliga platsen medför du ingen extra lagringskostnad och riskerar inte datakällans integritet. Du kan skapa datatillgångar från Azure Machine Learning-datalager, Azure Storage, offentliga URL:er och lokala filer.

Dricks

För datauppladdningar med mindre storlek fungerar skapande av Azure Machine Learning-datatillgångar bra för datauppladdningar från lokala datorresurser till molnlagring. Den här metoden undviker behovet av extra verktyg eller verktyg. En större datauppladdning kan dock kräva ett dedikerat verktyg eller verktyg, till exempel azcopy. Kommandoradsverktyget azcopy flyttar data till och från Azure Storage. Läs mer om azcopy här.

Nästa notebook-cell skapar datatillgången. Kodexemplet laddar upp rådatafilen till den avsedda molnlagringsresursen.

Varje gång du skapar en datatillgång behöver du en unik version för den. Om versionen redan finns får du ett fel. I den här koden använder vi "initial" för den första läsningen av data. Om den versionen redan finns hoppar vi över att skapa den igen.

Du kan också utelämna versionsparametern och ett versionsnummer genereras åt dig, från och med 1 och sedan öka därifrån.

I den här självstudien använder vi namnet "initial" som den första versionen. Självstudien Skapa maskininlärningspipelines för produktion använder också den här versionen av data, så här använder vi ett värde som du ser igen i den självstudien.

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

Du kan se de uppladdade data genom att välja Data till vänster. Du ser att data laddas upp och en datatillgång skapas:

Screenshot shows the data in studio.

Dessa data heter kreditkort och på fliken Datatillgångar kan vi se dem i kolumnen Namn. Dessa data laddades upp till arbetsytans standarddatalager med namnet workspaceblobstore, som visas i kolumnen Datakälla .

Ett Azure Machine Learning-datalager är en referens till ett befintligt lagringskonto i Azure. Ett datalager erbjuder följande fördelar:

  1. Ett vanligt och lätthanterad API för att interagera med olika lagringstyper (Blob/Files/Azure Data Lake Storage) och autentiseringsmetoder.
  2. Ett enklare sätt att identifiera användbara datalager när du arbetar som ett team.
  3. I skripten kan du dölja anslutningsinformation för autentiseringsbaserad dataåtkomst (tjänstens huvudnamn/SAS/nyckel).

Få åtkomst till dina data i en notebook-fil

Pandas har direkt stöd för URI:er – det här exemplet visar hur du läser en CSV-fil från ett Azure Machine Learning-datalager:

import pandas as pd

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

Men som tidigare nämnts kan det bli svårt att komma ihåg dessa URI:er. Dessutom måste du manuellt ersätta alla <delsträngsvärden> i kommandot pd.read_csv med de verkliga värdena för dina resurser.

Du vill skapa datatillgångar för data som används ofta. Här är ett enklare sätt att komma åt CSV-filen i Pandas:

Viktigt!

I en notebook-cell kör du den här koden för att installera azureml-fsspec Python-biblioteket i Jupyter-kerneln:

%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()

Läs Åtkomst till data från Azure Cloud Storage under interaktiv utveckling för att lära dig mer om dataåtkomst i en notebook-fil.

Skapa en ny version av datatillgången

Du kanske har märkt att data behöver lite ljusrengöring så att de passar för att träna en maskininlärningsmodell. Den har:

  • två rubriker
  • en klient-ID-kolumn. vi skulle inte använda den här funktionen i Machine Learning
  • blanksteg i svarsvariabelns namn

Jämfört med CSV-formatet blir Parquet-filformatet också ett bättre sätt att lagra dessa data. Parquet erbjuder komprimering och underhåller schemat. Använd därför följande för att rensa data och lagra dem i Parquet:

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

Den här tabellen visar strukturen för data i den ursprungliga default_of_credit_card_clients.csv filen . CSV-fil som laddades ned i ett tidigare steg. De uppladdade data innehåller 23 förklarande variabler och en svarsvariabel, enligt följande:

Kolumnnamn Variabeltyp beskrivning
X1 Förklarande Beloppet för den givna krediten (NT-dollar): den omfattar både den individuella konsumentkrediten och deras familjekredit (tilläggskredit).
X2 Förklarande Kön (1 = man, 2 = kvinna).
X3 Förklarande Utbildning (1 = forskarskola; 2 = universitet; 3 = gymnasiet; 4 = andra).
X4 Förklarande Civilstånd (1 = gift; 2 = singel; 3 = andra).
X5 Förklarande Ålder (år).
X6-X11 Förklarande Historik över tidigare betalning. Vi spårade de senaste månatliga betalningsposterna (från april till september 2005). -1 = betala vederbörligen; 1 = betalningsfördröjning för en månad; 2 = betalningsfördröjning i två månader; . . .; 8 = betalningsfördröjning i åtta månader. 9 = betalningsfördröjning i nio månader och senare.
X12-17 Förklarande Belopp för fakturautdrag (NT-dollar) från april till september 2005.
X18-23 Förklarande Belopp för tidigare betalning (NT-dollar) från april till september 2005.
Y Response Standardbetalning (Ja = 1, Nej = 0)

Skapa sedan en ny version av datatillgången (data överförs automatiskt till molnlagring). För den här versionen lägger vi till ett tidsvärde, så att ett annat versionsnummer skapas varje gång koden körs.

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

Den rensade parquet-filen är den senaste versionens datakälla. Den här koden visar resultatuppsättningen för CSV-versionen först och sedan Parquet-versionen:

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

Rensa resurser

Om du planerar att fortsätta nu till andra självstudier går du vidare till Nästa steg.

Stoppa beräkningsinstans

Om du inte ska använda den nu stoppar du beräkningsinstansen:

  1. Välj Beräkning i det vänstra navigeringsområdet i studion.
  2. På de översta flikarna väljer du Beräkningsinstanser
  3. Välj beräkningsinstansen i listan.
  4. I det övre verktygsfältet väljer du Stoppa.

Ta bort alla resurser

Viktigt!

De resurser som du har skapat kan användas som förutsättningar för andra Azure Machine Learning-självstudier och instruktionsartiklar.

Om du inte planerar att använda någon av de resurser som du har skapat tar du bort dem så att du inte debiteras några avgifter:

  1. I Azure-portalen väljer du Resursgrupper längst till vänster.

  2. I listan väljer du den resursgrupp som du skapade.

  3. Välj Ta bort resursgrupp.

    Screenshot of the selections to delete a resource group in the Azure portal.

  4. Ange resursgruppsnamnet. Välj sedan ta bort.

Nästa steg

Läs Skapa datatillgångar för mer information om datatillgångar.

Läs Skapa datalager om du vill veta mer om datalager.

Fortsätt med självstudier för att lära dig hur du utvecklar ett träningsskript.