Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
VAN TOEPASSING OP:
Python SDK azure-ai-ml v2 (actueel)
In deze handleiding leert u:
- 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 machine learning-modellen om hypothesen te valideren. Deze prototypeprojectfase is zeer interactief en leent zich voor ontwikkeling in een IDE of een Jupyter-notebook met een interactieve Python-console. In deze zelfstudie worden deze concepten beschreven.
Vereisten
-
Als u Azure Machine Learning wilt gebruiken, hebt u een werkruimte nodig. Als u die nog niet hebt, voltooi dan De resources maken die u nodig hebt om aan de slag te gaan om een werkruimte te maken en meer te leren 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.
-
Meld u aan bij de studio en selecteer uw werkruimte als deze nog niet is geopend.
-
Open of maak een notitieblok in uw werkruimte:
- Als u code in cellen wilt kopiëren en plakken, maakt u een nieuw notitieblok.
- Ofwel opent u tutorials/get-started-notebooks/explore-data.ipynb in de sectie Voorbeelden van Studio. Selecteer vervolgens Clone om de notebook toe te voegen aan uw Files. Raadpleeg Meer informatie in voorbeeldnotebooks om voorbeeldnotebooks te vinden.
Uw kernel instellen en openen in Visual Studio Code (VS Code)
Maak op de bovenste balk boven uw geopende notebook een compute-exemplaar als u er nog geen hebt.
Als het rekenproces is gestopt, selecteert u Rekenproces starten en wacht u totdat het wordt uitgevoerd.
Wacht totdat het rekenproces wordt uitgevoerd. Zorg er vervolgens voor dat de kernel, rechtsboven te vinden, op
Python 3.10 - SDK v2staat. Zo niet, gebruik de vervolgkeuzelijst om deze kernel te selecteren.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.
Als u een banner ziet met de melding dat u moet worden geverifieerd, selecteert u Verifiëren.
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 Open in VS Code en selecteer vervolgens de web- of desktopoptie. Bij het starten op deze manier wordt VS Code gekoppeld aan uw rekenproces, de kernel en het bestandssysteem van de werkruimte.
Belangrijk
De rest van deze tutorial bevat cellen van het tutorialnotebook. 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 een voorbeeld van creditcardclientgegevens in CSV-indeling. De stappen worden uitgevoerd in een Azure Machine Learning-resource. In die resource maakt u een lokale map met de voorgestelde naam van gegevens, direct onder de map waar dit notebook zich bevindt.
Notitie
Deze zelfstudie is afhankelijk van gegevens die zijn opgeslagen in de maplocatie van een Azure Machine Learning-resource. Voor deze zelfstudie betekent 'lokaal' een maplocatie in die Azure Machine Learning-resource.
Selecteer Terminal openen onder de drie puntjes, zoals wordt weergegeven in deze afbeelding:
Het terminalvenster wordt geopend op een nieuw tabblad.
Zorg ervoor dat u de map (
cd) wijzigt in dezelfde map waarin 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 locatedVoer deze opdrachten in het terminalvenster in om de gegevens naar uw rekeninstantie te kopiëren:
mkdir data cd data # the subfolder where you'll store the data wget https://azuremlexamples.blob.core.windows.net/datasets/credit_card/default_of_credit_card_clients.csvU 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 u de code verkent, hebt u een manier nodig om naar uw werkruimte te verwijzen. U maakt ml_client aan als referentie naar de werkruimte. Vervolgens gebruikt u ml_client om resources en jobs te beheren.
Voer in de volgende cel uw abonnements-id, resourcegroepnaam en werkruimtenaam in. Deze waarden zoeken:
- Selecteer in de rechterbovenhoek Azure Machine Learning-studio werkbalk de naam van uw werkruimte.
- Kopieer de waarde voor werkruimte, resourcegroep en abonnements-id naar de code.
- U moet elke waarde afzonderlijk kopiëren, één voor één. Sluit het gebied, plak de waarde en ga vervolgens verder met de volgende.
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes
# authenticate
try:
credential = DefaultAzureCredential()
credential.get_token("https://management.azure.com/.default")
except Exception:
credential = InteractiveBrowserCredential()
# 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 en wacht op de eerste keer dat de client een oproep moet doen. 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 zijn vergelijkbaar 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.
Bij het maken van gegevensassets wordt ook een verwijzing naar de locatie van de gegevensbron gemaakt, evenals 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 uit Azure Machine Learning-gegevensarchieven, Azure Storage, openbare URL's en lokale bestanden.
Aanbeveling
Voor kleinere datauploads is het maken van gegevensassets in Azure Machine Learning een goede optie om gegevens vanaf lokale bronnen naar cloudopslag te uploaden. Deze aanpak maakt extra tools of hulpprogramma's overbodig. Grotere data-uploads kunnen echter een speciaal programma of hulpprogramma vereisen, bijvoorbeeld azcopy. Het opdrachtregelprogramma azcopy verplaatst gegevens naar en van Azure Storage. Zie Aan de slag met AzCopy voor meer informatie over azcopy.
De volgende notebookcel maakt de gegevensasset. 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 gebruikt u 'initial' voor de eerste keer dat de gegevens worden gelezen. Als deze versie al bestaat, wordt deze niet opnieuw gemaakt door de code.
U kunt ook de versieparameter weglaten. In dit geval wordt er een versienummer voor u gegenereerd, beginnend bij 1 en vervolgens verder opgehoogd.
In deze zelfstudie wordt de naam 'initial' gebruikt voor de eerste versie. In de zelfstudie Machine Learning-pijplijnen voor productie maken wordt ook gebruikgemaakt van deze versie van de gegevens, dus u gebruikt 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 in de sectie Assets van het navigatiemenu aan de linkerkant. De gegevens worden geüpload en er wordt een gegevensasset gemaakt:
Deze gegevens hebben de naam creditcard. Op het tabblad Gegevensassets ziet u deze in de kolom Naam .
Een Azure Machine Learning-gegevensarchief is een verwijzing naar een bestaand opslagaccount in Azure. Een gegevensarchief biedt de volgende voordelen:
Een veelgebruikte en gebruiksvriendelijke API voor interactie met verschillende opslagtypen:
- Azure Data Lake Storage
- Klont
- Bestanden
en authenticatiemethoden.
Een eenvoudigere manier om nuttige gegevensarchieven te ontdekken wanneer u als team werkt.
In uw scripts, een manier om verbindingsinformatie te verbergen voor toegang tot gegevens op basis van aanmeldingsgegevens (serviceprincipal/SAS/sleutel).
Toegang tot uw gegevens in een notebook
U wilt gegevensassets maken voor veelgebruikte gegevens. U kunt toegang krijgen tot de gegevens met behulp van de URI zoals beschreven in Access-gegevens uit een gegevensarchief-URI, net zoals u dat zou doen vanuit een bestandssysteem. Zoals eerder vermeld, kan het echter moeilijk worden om deze URI's te onthouden.
Een alternatief is het gebruik van de azureml-fsspec bibliotheek, die een bestandssysteeminterface biedt voor Azure Machine Learning-gegevensarchieven. 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()
Voor meer informatie over toegang tot gegevens in een notebook, zie Gegevens openen vanuit Azure-cloudopslag tijdens interactieve ontwikkeling.
Een nieuwe versie van de gegevensasset maken
De gegevens hebben een lichte reiniging nodig om deze geschikt te maken voor het trainen van een machine learning-model. Het heeft:
- Twee kopteksten
- Een client-id-kolom die niet zou worden gebruikt als een functie in machine learning
- Spaties in de naam van de antwoordvariabele
In vergelijking met de CSV-indeling is de Parquet-bestandsindeling ook een betere manier om deze gegevens op te slaan. Parquet biedt compressie en onderhoudt het schema. Ga als volgt te werk om de gegevens op te schonen en in Parquet-indeling op te slaan:
# 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 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 verstrekte krediet (NT dollar): dit omvat zowel het individuele consumentenkrediet als het aanvullende gezinskrediet. |
| 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. Maandelijkse betalingsgegevens uit het verleden, bijgehouden van april tot en met 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. |
| Y | Antwoord | 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))
Hulpbronnen opschonen
Als u van plan bent om nu door te gaan naar andere zelfstudies, gaat u verder met volgende stappen.
Compute-instantie stoppen
Als u deze nu niet wilt gebruiken, stopt u het rekenproces:
- Selecteer Compute in de studio in het linkerdeelvenster.
- Selecteer in de bovenste tabbladen Compute-instanties.
- Selecteer de compute-instantie in de lijst.
- Selecteer Stoppen op de bovenste werkbalk.
Alle resources verwijderen
Belangrijk
De resources die u hebt gemaakt kunnen worden gebruikt als vereiste voor andere Azure Machine Learning-zelfstudies en handleidingen.
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:
Voer in de Azure Portal in het zoekvak Resource groups in en selecteer deze in de resultaten.
Selecteer de resourcegroep die u hebt gemaakt uit de lijst.
Selecteer op de pagina Overzicht de optie Resourcegroep verwijderen.
Voer de naam van de resourcegroup in. Selecteer daarna Verwijderen.
Volgende stappen
Zie Data-assets maken voor meer informatie over data-assets.
Zie Gegevensarchieven maken voor meer informatie over gegevensarchieven.
Ga verder met de volgende zelfstudie voor meer informatie over het ontwikkelen van een trainingsscript: