Freigeben über


Tutorial: Hochladen, Zugreifen auf und Erkunden von Daten in Azure Machine Learning

GILT FÜR: Python SDK azure-ai-ml v2 (aktuell)

In diesem Tutorial erfahren Sie:

  • Hochladen Ihrer Daten in Cloudspeicher
  • Erstellen einer Azure Machine Learning-Datenressource
  • Zugreifen auf Ihre Daten in einem Notebook für die interaktive Entwicklung
  • Erstellen neuer Versionen von Datenressourcen

Ein Machine Learning-Projekt beginnt in der Regel mit explorativer Datenanalyse (EDA), Der Datenvorverarbeitung (Reinigung, Featuretechnik) und dem Erstellen von Prototypen für maschinelles Lernen, um Hypothesen zu validieren. Diese Prototypprojektphase ist sehr interaktiv und eignet sich für die Entwicklung in einer IDE oder einem Jupyter-Notizbuch mit einer interaktiven Python-Konsole. In diesem Lernprogramm werden diese Konzepte beschrieben.

Voraussetzungen

  1. Für die Verwendung von Azure Machine Learning benötigen Sie einen Arbeitsbereich. Wenn Sie noch keinen haben, schließen Sie Erstellen von Ressourcen, die Sie für die ersten Schritte benötigen ab, um einen Arbeitsbereich zu erstellen, und mehr über dessen Verwendung zu erfahren.

    Wichtig

    Wenn Ihr Azure Machine Learning-Arbeitsbereich mit einem verwalteten virtuellen Netzwerk konfiguriert ist, müssen Sie möglicherweise Ausgangsregeln hinzufügen, um den Zugriff auf die öffentlichen Python-Paketrepositorys zu ermöglichen. Weitere Informationen finden Sie unter Szenario: Zugreifen auf öffentliche Machine Learning-Pakete.

  2. Melden Sie sich bei Studio an, und wählen Sie Ihren Arbeitsbereich aus, falls dieser noch nicht geöffnet ist.

  3. Öffnen oder erstellen Sie ein neues Notebook in Ihrem Arbeitsbereich:

    • Wenn Sie Code in Zellen kopieren und einfügen möchten, erstellen Sie ein neues Notebook.
    • Alternativ öffnen Sie im Abschnitt Beispiele von Studio die Datei tutorials/get-started-notebooks/explore-data.ipynb. Wählen Sie dann Klonen aus, um das Notebook zu Ihren Dateien hinzuzufügen. Informationen zum Suchen nach Beispielnotebooks finden Sie unter Lernen anhand von Beispiel-Notebooks.

Festlegen des Kernels und Öffnen in Visual Studio Code (VS Code)

  1. Erstellen Sie auf der oberen Leiste über Ihrem geöffneten Notizbuch eine Compute-Instanz, falls Sie noch keine besitzen.

    Screenshot zeigt das Erstellen einer Compute-Instanz.

  2. Wenn die Compute-Instanz beendet wurde, wählen Sie Compute starten aus, und warten Sie, bis sie ausgeführt wird.

    Screenshot: Starten einer beendeten Compute-Instanz

  3. Warten Sie, bis die Compute-Instanz ausgeführt wird. Vergewissern Sie sich dann, dass sich rechts oben der Kernel Python 3.10 - SDK v2 befindet. Falls nicht, verwenden Sie die Dropdownliste, um diesen Kernel auszuwählen.

    Screenshot zeigt das Festlegen des Kernels.

    Falls dieser Kernel nicht angezeigt wird, überprüfen Sie, ob Ihre Compute-Instanz ausgeführt wird. Falls ja, wählen Sie rechts oben im Notebook die Schaltfläche Aktualisieren aus.

  4. Wenn Sie ein Banner mit dem Hinweis sehen, dass Sie authentifiziert werden müssen, wählen Sie Authentifizieren aus.

  5. Sie können das Notebook hier ausführen oder es in VS Code öffnen, um eine vollständig integrierte Entwicklungsumgebung (Integrated Development Environment, IDE) mit der Leistungsfähigkeit von Azure Machine Learning-Ressourcen nutzen zu können. Wählen Sie In VS Code öffnen und dann unter „In VS Code bearbeiten“ entweder die Option „Web“ oder „Desktop“ aus. Wenn Sie den VS Code-Editor auf diese Weise starten, wird er an Ihre Compute-Instanz, den Kernel und das Dateisystem des Arbeitsbereichs angefügt.

    Screenshot: Öffnen des Notebooks in VS Code

Wichtig

Der Rest dieses Tutorials enthält Zellen des Tutorial-Notebooks. Kopieren Sie diese und fügen sie in Ihr neues Notebook ein, oder wechseln Sie jetzt zum Notebook, wenn Sie es geklont haben.

Herunterladen der in diesem Tutorial verwendeten Daten

Bei der Datenaufnahme verarbeitet Azure Data Explorer Rohdaten in diesen Formaten. In diesem Lernprogramm wird ein CSV-Format-Beispiel für Kreditkartendaten von Kunden verwendet. Die Schritte erfolgen in einer Azure Machine Learning-Ressource. In dieser Ressource erstellen Sie einen lokalen Ordner mit dem vorgeschlagenen Namen der Daten direkt unter dem Ordner, in dem sich dieses Notizbuch befindet.

Hinweis

Dieses Tutorial hängt von Daten ab, die in einem Azure Machine Learning-Ressourcenordner gespeichert sind. In diesem Tutorial bezieht sich „lokal“ auf einen Ordner in dieser Azure Machine Learning-Ressource.

  1. Wählen Sie unterhalb der drei Punkte Terminal öffnen aus, wie in dieser Abbildung gezeigt:

    Screenshot, der zeigt, wie Sie Terminaltools über die Symbolleiste des Notebooks öffnen.

  2. Das Terminalfenster wird auf einer neuen Registerkarte geöffnet.

  3. Stellen Sie sicher, dass Sie das Verzeichnis (cd) in denselben Ordner ändern, in dem sich dieses Notizbuch befindet. Wenn sich das Notebook beispielsweise in einem Ordner mit dem Namen get-started-notebooks befindet:

    cd get-started-notebooks    # modify this to the path where your notebook is located
    
  4. Geben Sie diese Befehle in das Terminalfenster ein, um die Daten auf Ihre Compute-Instanz zu kopieren:

    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.csv
    
  5. Sie können das Terminalfenster nun schließen.

Weitere Informationen zu den Daten im UC Irvine Machine Learning-Repository finden Sie unter dieser Ressource.

Erstellen eines Handles für den Arbeitsbereich

Bevor Sie den Code erkunden, benötigen Sie eine Möglichkeit, auf Ihren Arbeitsbereich zu verweisen. Sie erstellen ml_client als Handle für den Arbeitsbereich. Anschließend verwenden Sie ml_client zum Verwalten von Ressourcen und Aufträgen.

Geben Sie in der nächsten Zelle Ihre Abonnement-ID, den Namen der Ressourcengruppe und den Namen des Arbeitsbereichs ein. So finden Sie diese Werte:

  1. Wählen Sie auf der oben rechts angezeigten Azure Machine Learning Studio-Symbolleiste den Namen Ihres Arbeitsbereichs aus.
  2. Kopieren Sie den Wert für Arbeitsbereich, Ressourcengruppe und Abonnement-ID in den Code.
  3. Sie müssen jeden Wert einzeln kopieren. Schließen Sie den Abschnitt, fügen Sie den Wert ein, und fahren Sie dann mit dem nächsten fort.
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>",
)

Hinweis

Beim Erstellen von MLClient wird keine Verbindung mit dem Arbeitsbereich hergestellt. Die Clientinitialisierung ist ein langsamer Vorgang, bei dem gewartet wird, bis erstmals ein Aufruf erfolgen muss. Dies geschieht in der nächsten Codezelle.

Hochladen von Daten in Cloudspeicher

Azure Machine Learning verwendet Uniform Resource Identifiers (URIs), die auf Speicherorte in der Cloud verweisen. Ein URI erleichtert den Zugriff auf Daten in Notebooks und Aufträgen. Daten-URI-Formate ähneln den Web-URLs, die Sie in Ihrem Webbrowser für den Zugriff auf Webseiten verwenden. Zum Beispiel:

  • Zugreifen auf Daten vom öffentlichen HTTPS-Server: https://<account_name>.blob.core.windows.net/<container_name>/<folder>/<file>
  • Zugreifen auf Daten aus Azure Data Lake Gen 2: abfss://<file_system>@<account_name>.dfs.core.windows.net/<folder>/<file>

Azure Machine Learning-Datenobjekte ähneln Lesezeichen (Favoriten) in Webbrowsern. Anstatt sich lange Speicherpfade (URIs) zu merken, die auf Ihre am häufigsten verwendeten Daten verweisen, können Sie eine Datenressource erstellen und dann mit einem benutzerfreundlichen Namen auf diese Ressource zugreifen.

Durch Erstellen einer Datenressource erstellen Sie einen Verweis auf den Speicherort der Datenquelle zusammen mit einer Kopie der zugehörigen Metadaten. Da die Daten an ihrem vorhandenen Speicherort verbleiben, entstehen keine zusätzlichen Speicherkosten und riskieren keine Datenquellenintegrität. Sie können Datenressourcen aus Azure Machine Learning-Datenspeichern, Azure Storage, öffentlichen URLs und lokalen Dateien erstellen.

Tipp

Für kleinere Datenuploads eignet sich die Erstellung von Azure Machine Learning-Datenressourcen gut zum Hochladen von Daten aus lokalen Computerressourcen in cloudbasierten Speicher. Bei diesem Ansatz werden keine zusätzlichen Tools oder Hilfsprogramme benötigt. Größere Datenuploads erfordern jedoch möglicherweise ein dediziertes Tool oder Hilfsprogramm , z. B. Azcopy. Das Befehlszeilentool azcopy verschiebt Daten in und aus Azure Storage. Weitere Informationen zu Azcopy finden Sie unter "Erste Schritte mit AzCopy".

In der nächsten Notebookzelle wird die Datenressource erstellt. Im Codebeispiel wird die unbearbeitete Datendatei in den gewünschten Cloudspeicher hochgeladen.

Bei jeder Erstellung einer Datenressource wird für diese eine eindeutige Version benötigt. Wenn die Version bereits vorhanden ist, wird ein Fehler angezeigt. In diesem Code verwenden Sie "initial" für das erste Lesen der Daten. Wenn diese Version bereits vorhanden ist, wird der Code nicht erneut erstellt.

Sie können den version-Parameter auch auslassen. In diesem Fall wird eine Versionsnummer für Sie generiert, beginnend mit 1 und von dort aus erhöht.

In diesem Tutorial wird der Name „initial“ als erste Version verwendet. Das Lernprogramm zum Erstellen von Machine Learning-Pipelines für die Produktion verwendet auch diese Version der Daten, sodass Sie einen Wert verwenden, der in diesem Lernprogramm wieder angezeigt wird.

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

Um die hochgeladenen Daten zu untersuchen, wählen Sie " Daten " im Abschnitt " Objekte " des linken Navigationsmenüs aus. Die Daten wurden hochgeladen, und es wurde eine Datenressource erstellt:

Screenshot: Daten in Studio

Diese Daten werden als Kreditkarte bezeichnet. Auf der Registerkarte "Datenressourcen " können Sie sie in der Spalte "Name " sehen.

Ein Azure Machine Learning-Datenspeicher ist ein Verweis auf ein vorhandenes Speicherkonto in Azure. Ein Datenspeicher bietet folgende Vorteile:

  1. Eine gängige und benutzerfreundliche API für die Interaktion mit verschiedenen Speichertypen:

    • Azure Data Lake Storage
    • Blob
    • Dateien

    und Authentifizierungsmethoden.

  2. Eine einfachere Möglichkeit, nützliche Datenspeicher zu finden, wenn Sie als Team arbeiten.

  3. Eine Möglichkeit zum Verbergen von Verbindungsinformationen für den auf Anmeldeinformationen basierenden Datenzugriff (Dienstprinzipal/SAS/Schlüssel) in Ihren Skripts.

Zugreifen auf Ihre Daten in einem Notebook

Sie möchten Datenressourcen für häufig verwendete Daten erstellen. Sie können auf die Daten mithilfe des URI zugreifen, wie in Zugriff auf Daten von einem Datenspeicher-URI, wie einem Dateisystem, beschrieben. Wie bereits erwähnt, kann es jedoch schwierig werden, diese URIs zu merken.

Eine Alternative ist die Verwendung der azureml-fsspec Bibliothek, die eine Dateisystemschnittstelle für Azure Machine Learning-Datenspeicher bereitstellt. Dies ist eine einfachere Möglichkeit, auf die CSV-Datei in Pandas zuzugreifen:

Wichtig

Führen Sie diesen Code in einer Notebookzelle aus, um die Python-Bibliothek azureml-fsspec in Ihrem Jupyter-Kernel zu installieren:

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

Weitere Informationen zum Datenzugriff in einem Notizbuch finden Sie unter Access-Daten aus dem Azure-Cloudspeicher während der interaktiven Entwicklung.

Erstellen einer neuen Version der Datenressource

Die Daten benötigen eine leichte Reinigung, damit sie für die Schulung eines maschinellen Lernmodells geeignet ist. Es bietet Folgendes:

  • Zwei Kopfzeilen
  • Eine Client-ID-Spalte, die nicht als Feature im maschinellen Lernen verwendet wird
  • Leerzeichen im Namen der Antwortvariable

Auch im Vergleich zum CSV-Format ist das Parkettdateiformat eine bessere Möglichkeit, diese Daten zu speichern. Parquet bietet Kompression und bewahrt das Schema. Um die Daten zu reinigen und im Parkettformat zu speichern:

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

Diese Tabelle zeigt die Struktur der Daten in der ursprünglichen default_of_credit_card_clients.csv Datei, die in einem früheren Schritt heruntergeladen wurde. Die hochgeladenen Daten enthalten 23 erklärende Variablen und 1 Antwortvariable, wie hier gezeigt:

Spaltenname(n) Variablentyp BESCHREIBUNG
X1 Erklärend Höhe des eingeräumten Kreditrahmens (NT-Dollar): Umfasst sowohl den individuellen Verbraucherkredit als auch den (zusätzlichen) Familienkredit.
X2 Erklärend Geschlecht (1 = männlich; 2 = weiblich).
X3 Erklärend Schulbildung (1 = Fachhochschule; 2 = Universität; 3 = Abitur; 4 = andere).
X4 Erklärend Familienstand (1 = verheiratet; 2 = ledig; 3 = andere).
X5 Erklärend Alter (Jahre).
X6-X11 Erklärend Verlauf der vergangenen Zahlungen. Die letzten monatlichen Zahlungsdatensätze wurden von April bis September 2005 nachverfolgt. -1 = ordnungsgemäße Zahlung; 1 = einmonatiger Zahlungsverzug; 2 = zweimonatiger Zahlungsverzug; ... . ; 8 = achtmonatiger Zahlungsverzug; 9 = neunmonatiger Zahlungsverzug und mehr
X12-17 Erklärend Rechnungsbetrag (NT-Dollar) von April bis September 2005.
X18-23 Erklärend Betrag der vorherigen Zahlung (NT-Dollar) von April bis September 2005.
J Antwort Standardzahlung (Ja = 1, Nein = 0)

Erstellen Sie als Nächstes eine neue Version der Datenressource. Die Daten werden automatisch in den Cloudspeicher hochgeladen. Fügen Sie für diese Version einen Zeitwert hinzu, damit bei jeder Ausführung dieses Codes eine andere Versionsnummer erstellt wird.

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

Die gereinigte Parkettdatei ist die neueste Versionsdatenquelle. Dieser Code zeigt zuerst das Resultset der CSV-Version und dann die Parquet-Version:

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

Bereinigen von Ressourcen

Wenn Sie nun mit dem anderen Tutorials fortfahren möchten, springen Sie zu Nächste Schritte.

Beenden der Compute-Instanz

Wenn Sie derzeit keine Verwendung planen, beenden Sie die Compute-Instanz:

  1. Wählen Sie im Studio im linken Bereich "Berechnen" aus.
  2. Wählen Sie auf den oberen Registerkarten " Compute instances" aus.
  3. Wählen Sie in der Liste die Compute-Instanz aus.
  4. Wählen Sie auf der oberen Symbolleiste Beenden aus.

Löschen aller Ressourcen

Wichtig

Die von Ihnen erstellten Ressourcen können ggf. auch in anderen Azure Machine Learning-Tutorials und -Anleitungen verwendet werden.

Wenn Sie die erstellten Ressourcen nicht mehr benötigen, löschen Sie diese, damit Ihnen keine Kosten entstehen:

  1. Geben Sie im Azure-Portal den Suchbegriff Ressourcengruppen in das Suchfeld ein, und wählen Sie in den Ergebnissen die entsprechende Option aus.

  2. Wählen Sie in der Liste die Ressourcengruppe aus, die Sie erstellt haben.

  3. Wählen Sie auf der Seite Übersicht die Option Ressourcengruppe löschen aus.

    Screenshot der Auswahlmöglichkeiten zum Löschen einer Ressourcengruppe im Azure-Portal.

  4. Geben Sie den Ressourcengruppennamen ein. Wählen Sie anschließend die Option Löschen.

Nächste Schritte

Weitere Informationen zu Datenressourcen finden Sie unter Erstellen von Datenressourcen.

Weitere Informationen zu Datenspeichern finden Sie unter Erstellen von Datenspeichern.

Fahren Sie mit dem nächsten Tutorial fort, um zu erfahren, wie Sie ein Trainingsskript entwickeln: