Delen via


Zelfstudie: Uw gegevens uploaden, openen en verkennen in Azure Machine Learning

VAN TOEPASSING OP: Python SDK azure-ai-ml v2 (actueel)

In deze zelfstudie leert u het volgende:

  • Uw gegevens uploaden naar cloudopslag
  • Een Azure Machine Learning-gegevensasset maken
  • Toegang tot uw gegevens in een notebook voor interactieve ontwikkeling
  • Nieuwe versies van gegevensassets maken

Een machine learning-project begint meestal met experimentele gegevensanalyse (EDA), gegevensvoorverwerking (reiniging, functie-engineering) en het bouwen van prototypen van het Machine Learning-model om hypothesen te valideren. Deze prototypeprojectfase is zeer interactief. Het leent zich voor ontwikkeling in een IDE of een Jupyter-notebook, met een interactieve Python-console. In deze zelfstudie worden deze ideeën beschreven.

In deze video ziet u hoe u aan de slag gaat in Azure Machine Learning-studio, zodat u de stappen in de zelfstudie kunt volgen. In de video ziet u hoe u een notebook maakt, het notebook kloont, een rekenproces maakt en de gegevens downloadt die nodig zijn voor de zelfstudie. De stappen worden ook beschreven in de volgende secties.

Vereisten

  1. Als u Azure Machine Learning wilt gebruiken, hebt u een werkruimte nodig. Als u er nog geen hebt, voltooit u Resources maken die u nodig hebt om aan de slag te gaan met het maken van een werkruimte en meer informatie over het gebruik ervan.

    Belangrijk

    Als uw Azure Machine Learning-werkruimte is geconfigureerd met een beheerd virtueel netwerk, moet u mogelijk uitgaande regels toevoegen om toegang tot de openbare Python-pakketopslagplaatsen toe te staan. Zie Scenario: Toegang tot openbare machine learning-pakketten voor meer informatie.

  2. Meld u aan bij de studio en selecteer uw werkruimte als deze nog niet is geopend.

  3. Open of maak een notitieblok in uw werkruimte:

Uw kernel instellen en openen in Visual Studio Code (VS Code)

  1. Maak op de bovenste balk boven het geopende notitieblok een rekenproces als u er nog geen hebt.

    Schermopname van het maken van een rekenproces.

  2. Als het rekenproces is gestopt, selecteert u Rekenproces starten en wacht u totdat het wordt uitgevoerd.

    Schermopname van het starten van een gestopt rekenproces.

  3. Wacht totdat het rekenproces wordt uitgevoerd. Zorg er vervolgens voor dat de kernel, in de rechterbovenhoek, is Python 3.10 - SDK v2. Als dit niet het probleem is, gebruikt u de vervolgkeuzelijst om deze kernel te selecteren.

    Schermopname van het instellen van de kernel.

    Als u deze kernel niet ziet, controleert u of uw rekenproces wordt uitgevoerd. Als dat het is, selecteert u de knop Vernieuwen rechtsboven in het notitieblok.

  4. Als u een banner ziet met de melding dat u moet worden geverifieerd, selecteert u Verifiëren.

  5. U kunt het notebook hier uitvoeren of openen in VS Code voor een volledige IDE (Integrated Development Environment) met de kracht van Azure Machine Learning-resources. Selecteer Openen in VS Code en selecteer vervolgens de optie web of bureaublad. Bij het starten op deze manier wordt VS Code gekoppeld aan uw rekenproces, de kernel en het bestandssysteem van de werkruimte.

    Schermopname van het openen van het notebook in VS Code.

Belangrijk

De rest van deze zelfstudie bevat cellen van het zelfstudienotitieblok. Kopieer en plak deze in uw nieuwe notitieblok of ga nu naar het notitieblok als u het hebt gekloond.

De gegevens downloaden die in deze zelfstudie worden gebruikt

Voor gegevensopname verwerkt Azure Data Explorer onbewerkte gegevens in deze indelingen. In deze zelfstudie wordt gebruikgemaakt van dit voorbeeld van creditcardgegevens van creditcardclients. De stappen worden uitgevoerd in een Azure Machine Learning-resource. In die resource maken we een lokale map, met de voorgestelde naam van gegevens, rechtstreeks onder de map waar dit notebook zich bevindt.

Notitie

Deze zelfstudie is afhankelijk van gegevens die zijn geplaatst in een azure Machine Learning-resourcemaplocatie. Voor deze zelfstudie betekent 'lokaal' een maplocatie in die Azure Machine Learning-resource.

  1. Selecteer Terminal openen onder de drie puntjes, zoals wordt weergegeven in deze afbeelding:

    Schermopname van het geopende terminalhulpprogramma op de werkbalk van het notitieblok.

  2. Het terminalvenster wordt geopend op een nieuw tabblad.

  3. Zorg ervoor dat u cd (Map wijzigen) in dezelfde map bevindt als waar dit notitieblok zich bevindt. Als het notitieblok zich bijvoorbeeld in een map bevindt met de naam get-started-notebooks:

    cd get-started-notebooks    #  modify this to the path where your notebook is located
    
  4. Voer deze opdrachten in het terminalvenster in om de gegevens naar uw rekeninstantie te kopiëren:

    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. U kunt nu het terminalvenster sluiten.

Ga naar deze resource voor meer informatie over de gegevens in de UC Irvine Machine Learning Repository.

Een ingang maken voor de werkruimte

Voordat we de code verkennen, hebt u een manier nodig om naar uw werkruimte te verwijzen. U maakt ml_client een ingang voor de werkruimte. Vervolgens gebruikt ml_client u om resources en taken te beheren.

Voer in de volgende cel uw abonnements-id, resourcegroepnaam en werkruimtenaam in. Deze waarden zoeken:

  1. Selecteer in de rechterbovenhoek Azure Machine Learning-studio werkbalk de naam van uw werkruimte.
  2. Kopieer de waarde voor werkruimte, resourcegroep en abonnements-id naar de code.
  3. U moet de waarden één voor één kopiëren, het gebied sluiten en plakken en vervolgens doorgaan naar de volgende.
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>",
)

Notitie

Het maken van MLClient maakt geen verbinding met de werkruimte. De initialisatie van de client is lui. Het wacht tot de eerste keer dat het moet worden gebeld. Dit gebeurt in de volgende codecel.

Gegevens uploaden naar cloudopslag

Azure Machine Learning maakt gebruik van Uniform Resource Identifiers (URI's), die verwijzen naar opslaglocaties in de cloud. Met een URI hebt u eenvoudig toegang tot gegevens in notebooks en taken. Gegevens-URI-indelingen hebben een indeling die vergelijkbaar is met de web-URL's die u in uw webbrowser gebruikt voor toegang tot webpagina's. Voorbeeld:

  • Toegang tot gegevens van openbare https-server: https://<account_name>.blob.core.windows.net/<container_name>/<folder>/<file>
  • Toegang tot gegevens van Azure Data Lake Gen 2: abfss://<file_system>@<account_name>.dfs.core.windows.net/<folder>/<file>

Een Azure Machine Learning-gegevensasset is vergelijkbaar met bladwijzers van webbrowsers (favorieten). In plaats van lange opslagpaden (URI's) te onthouden die verwijzen naar uw meest gebruikte gegevens, kunt u een gegevensasset maken en die asset vervolgens openen met een beschrijvende naam.

Het maken van gegevensassets maakt ook een verwijzing naar de locatie van de gegevensbron, samen met een kopie van de metagegevens. Omdat de gegevens zich op de bestaande locatie bevinden, worden er geen extra opslagkosten in rekening gebracht en loopt u geen risico op gegevensbronintegriteit. U kunt gegevensassets maken op basis van Azure Machine Learning-gegevensarchieven, Azure Storage, openbare URL's en lokale bestanden.

Tip

Voor kleinere gegevensuploads werkt het maken van azure Machine Learning-gegevensassets goed voor het uploaden van gegevens van lokale machineresources naar cloudopslag. Deze aanpak voorkomt dat extra hulpprogramma's of hulpprogramma's nodig zijn. Voor een grotere gegevensupload is echter mogelijk een speciaal hulpprogramma of hulpprogramma vereist, bijvoorbeeld azcopy. Het opdrachtregelprogramma azcopy verplaatst gegevens naar en van Azure Storage. Ga naar deze resource voor meer informatie over azcopy.

In de volgende notebookcel wordt de gegevensasset gemaakt. Het codevoorbeeld uploadt het onbewerkte gegevensbestand naar de aangewezen cloudopslagresource.

Telkens wanneer u een gegevensasset maakt, hebt u er een unieke versie voor nodig. Als de versie al bestaat, krijgt u een foutmelding. In deze code gebruiken we de 'initial' voor de eerste keer dat de gegevens worden gelezen. Als die versie al bestaat, maken we deze niet opnieuw.

U kunt ook de versieparameter weglaten. In dit geval wordt er een versienummer voor u gegenereerd, te beginnen met 1 en vervolgens vanaf daar te verhogen.

In deze zelfstudie wordt de naam 'initial' gebruikt als de eerste versie. In de zelfstudie Machine Learning-pijplijnen voor productie maken wordt ook gebruikgemaakt van deze versie van de gegevens, dus hier gebruiken we een waarde die u in die zelfstudie opnieuw ziet.

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

Als u de geüploade gegevens wilt bekijken, selecteert u Gegevens aan de linkerkant. De gegevens worden geüpload en er wordt een gegevensasset gemaakt:

Schermopname van de gegevens in Studio.

Deze gegevens hebben de naam creditcard en op het tabblad Gegevensassets kunnen we deze zien in de kolom Naam .

Een Azure Machine Learning-gegevensarchief is een verwijzing naar een bestaand opslagaccount in Azure. Een gegevensarchief biedt de volgende voordelen:

  1. Een veelgebruikte en gebruiksvriendelijke API om te communiceren met verschillende opslagtypen

    • Azure Data Lake Storage
    • Blob
    • Bestanden

    en verificatiemethoden.

  2. Een eenvoudigere manier om nuttige gegevensarchieven te ontdekken wanneer u als team werkt.

  3. In uw scripts kunt u verbindingsgegevens verbergen voor gegevenstoegang op basis van referenties (service-principal/SAS/sleutel).

Toegang tot uw gegevens in een notebook

Pandas biedt rechtstreeks ondersteuning voor URI's. In dit voorbeeld ziet u hoe u een CSV-bestand leest uit een Azure Machine Learning-gegevensarchief:

import pandas as pd

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

Zoals eerder vermeld, kan het echter moeilijk worden om deze URI's te onthouden. Daarnaast moet u handmatig alle <subtekenreekswaarden> in de opdracht pd.read_csv vervangen door de werkelijke waarden voor uw resources.

U wilt gegevensassets maken voor veelgebruikte gegevens. Dit is een eenvoudigere manier om toegang te krijgen tot het CSV-bestand in Pandas:

Belangrijk

Voer in een notebookcel deze code uit om de azureml-fsspec Python-bibliotheek in uw Jupyter-kernel te installeren:

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

Ga naar Access-gegevens uit Azure-cloudopslag tijdens interactieve ontwikkeling voor meer informatie over gegevenstoegang in een notebook.

Een nieuwe versie van de gegevensasset maken

De gegevens hebben een lichte reiniging nodig, zodat deze geschikt zijn voor het trainen van een machine learning-model. Het heeft:

  • twee headers
  • een client-id-kolom; we zouden deze functie niet gebruiken in Machine Learning
  • spaties in de naam van de antwoordvariabele

In vergelijking met de CSV-indeling wordt de Parquet-bestandsindeling ook een betere manier om deze gegevens op te slaan. Parquet biedt compressie en onderhoudt het schema. Als u de gegevens wilt opschonen en opslaan in Parquet, gebruikt u:

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

In deze tabel ziet u de structuur van de gegevens in het oorspronkelijke default_of_credit_card_clients.csv bestand. CSV-bestand dat in een eerdere stap is gedownload. De geüploade gegevens bevatten 23 verklarende variabelen en 1 antwoordvariabele, zoals hier wordt weergegeven:

Kolomnaam(en) Type variabele Beschrijving
X1 Verklarend Bedrag van het opgegeven tegoed (NT-dollar): het omvat zowel het individuele consumentenkrediet als het gezinskrediet (aanvullend).
X2 Verklarend Geslacht (1 = mannelijk; 2 = vrouw).
X3 Verklarend Onderwijs (1 = graduate school; 2 = universiteit; 3 = middelbare school; 4 = anderen).
X4 Verklarend Burgerlijke staat (1 = getrouwd; 2 = single; 3 = anderen).
X5 Verklarend Leeftijd (jaren).
X6-X11 Verklarend Geschiedenis van eerdere betaling. We hebben de afgelopen maandelijkse betalingsrecords bijgehouden (van april tot september 2005). -1 = naar behoren betalen; 1 = betalingsvertraging voor één maand; 2 = betalingsvertraging voor twee maanden; . . .; 8 = betalingsvertraging voor acht maanden; 9 = betalingsvertraging voor negen maanden en hoger.
X12-17 Verklarend Bedrag van factuuroverzicht (NT dollar) van april tot september 2005.
X18-23 Verklarend Bedrag van eerdere betaling (NT dollar) van april tot september 2005.
J Respons Standaardbetaling (Ja = 1, Nee = 0)

Maak vervolgens een nieuwe versie van de gegevensasset (de gegevens worden automatisch geüpload naar cloudopslag). Voor deze versie voegt u een tijdwaarde toe, zodat telkens wanneer deze code wordt uitgevoerd, een ander versienummer wordt gemaakt.

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

Het opgeschoonde Parquet-bestand is de meest recente versiegegevensbron. Deze code toont eerst de resultatenset van de CSV-versie en vervolgens de Parquet-versie:

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

Resources opschonen

Als u van plan bent om nu door te gaan naar andere zelfstudies, gaat u verder met volgende stappen.

Rekenproces stoppen

Als u deze nu niet wilt gebruiken, stopt u het rekenproces:

  1. Selecteer Compute in het linkernavigatiegebied in de studio.
  2. Selecteer op de bovenste tabbladen Rekeninstanties
  3. Selecteer het rekenproces in de lijst.
  4. Selecteer Stoppen op de bovenste werkbalk.

Alle resources verwijderen

Belangrijk

De resources die u hebt gemaakt, kunnen worden gebruikt als de vereisten voor andere Azure Machine Learning-zelfstudies en artikelen met procedures.

Als u niet van plan bent om een van de resources te gebruiken die u hebt gemaakt, verwijdert u deze zodat er geen kosten in rekening worden gebracht:

  1. Voer in azure Portal in het zoekvak resourcegroepen in en selecteer deze in de resultaten.

  2. Selecteer de resourcegroep die u hebt gemaakt uit de lijst.

  3. Selecteer op de pagina Overzicht de optie Resourcegroep verwijderen.

    Schermopname van de selecties voor het verwijderen van een resourcegroep in de Azure-portal.

  4. Voer de naam van de resourcegroup in. Selecteer daarna Verwijderen.

Volgende stappen

Ga naar Gegevensassets maken voor meer informatie over gegevensassets.

Ga naar Gegevensarchieven maken voor meer informatie over gegevensarchieven.

Ga verder met de volgende zelfstudie voor meer informatie over het ontwikkelen van een trainingsscript: