Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DOTYCZY:
Zestaw PYTHON SDK azure-ai-ml w wersji 2 (bieżąca)
W tym samouczku nauczysz się następujących rzeczy:
- Przekazywanie danych do magazynu w chmurze
- Tworzenie zasobu danych usługi Azure Machine Learning
- Uzyskiwanie dostępu do danych w notesie na potrzeby interaktywnego programowania
- Tworzenie nowych wersji zasobów danych
Projekt uczenia maszynowego zwykle rozpoczyna się od eksploracyjnej analizy danych (EDA), przetwarzania wstępnego danych (czyszczenia, inżynierii cech) i tworzenia prototypów modelu uczenia maszynowego w celu zweryfikowania hipotez. Ta faza tworzenia prototypu projektu jest wysoce interaktywna i nadaje się do programowania w środowisku IDE lub notesie Jupyter za pomocą interaktywnej konsoli języka Python. W tym samouczku opisano te pojęcia.
Wymagania wstępne
-
Aby korzystać z usługi Azure Machine Learning, potrzebny jest obszar roboczy. Jeśli go nie masz, ukończ tworzenie zasobów, aby rozpocząć tworzenie obszaru roboczego i dowiedz się więcej na temat korzystania z niego.
Ważne
Jeśli obszar roboczy usługi Azure Machine Learning jest skonfigurowany z zarządzaną siecią wirtualną, może być konieczne dodanie reguł ruchu wychodzącego w celu umożliwienia dostępu do publicznych repozytoriów pakietów języka Python. Aby uzyskać więcej informacji, zobacz Scenariusz: Uzyskiwanie dostępu do publicznych pakietów uczenia maszynowego.
-
Zaloguj się do programu Studio i wybierz swój obszar roboczy, jeśli jeszcze nie jest otwarty.
-
Otwórz lub utwórz notes w obszarze roboczym:
- Jeśli chcesz skopiować i wkleić kod do komórek, utwórz nowy notes.
- Możesz też otworzyć plik tutorials/get-started-notebooks/explore-data.ipynb z sekcji Przykłady w programie Studio. Następnie wybierz pozycję Klonuj, aby dodać notes do plików. Aby znaleźć przykładowe notesy, zobacz Learn from sample notebooks (Informacje na podstawie przykładowych notesów).
Ustawianie jądra i otwieranie go w programie Visual Studio Code (VS Code)
Na górnym pasku powyżej otwartego notesu utwórz wystąpienie obliczeniowe, jeśli jeszcze go nie masz.
Jeśli wystąpienie obliczeniowe zostanie zatrzymane, wybierz pozycję Uruchom obliczenia i zaczekaj na jego uruchomienie.
Poczekaj na uruchomienie wystąpienia obliczeniowego. Następnie upewnij się, że jądro znajdujące się w prawym górnym rogu ma wartość
Python 3.10 - SDK v2. Jeśli nie, użyj listy rozwijanej, aby wybrać to jądro.Jeśli to jądro nie jest widoczne, sprawdź, czy wystąpienie obliczeniowe jest uruchomione. Jeśli tak jest, wybierz przycisk Odśwież w prawym górnym rogu notesu.
Jeśli zostanie wyświetlony baner z informacją o konieczności uwierzytelnienia, wybierz pozycję Uwierzytelnij.
Możesz uruchomić notes tutaj lub otworzyć go w programie VS Code w celu uzyskania pełnego zintegrowanego środowiska projektowego (IDE) z możliwościami zasobów usługi Azure Machine Learning. Wybierz pozycję Otwórz w programie VS Code, a następnie wybierz opcję internetową lub klasyczną. Po uruchomieniu w ten sposób program VS Code jest dołączony do wystąpienia obliczeniowego, jądra i systemu plików obszaru roboczego.
Ważne
W pozostałej części tego samouczka znajdują się komórki notesu samouczka. Skopiuj je i wklej do nowego notesu lub przejdź do notesu teraz, jeśli go sklonujesz.
Pobieranie danych używanych w tym samouczku
W przypadku pozyskiwania danych usługa Azure Data Explorer obsługuje nieprzetworzone dane w tych formatach. W tym samouczku użyto przykładu danych klienta karty kredytowej w formacie CSV. Kroki są wykonywane w zasobie usługi Azure Machine Learning. W tym zasobie utworzysz folder lokalny z sugerowaną nazwą danych bezpośrednio w folderze, w którym znajduje się ten notes.
Uwaga
Ten samouczek zależy od danych umieszczonych w lokalizacji folderu zasobów usługi Azure Machine Learning. W tym samouczku "local" oznacza lokalizację folderu w tym zasobie usługi Azure Machine Learning.
Wybierz pozycję Otwórz terminal poniżej trzech kropek, jak pokazano na poniższej ilustracji:
Zostanie otwarte okno terminalu na nowej karcie.
Upewnij się, że zmieniono katalog (
cd) na ten sam folder, w którym znajduje się ten notes. Jeśli na przykład notes znajduje się w folderze o nazwie get-started-notebooks:cd get-started-notebooks # modify this to the path where your notebook is locatedWprowadź następujące polecenia w oknie terminalu, aby skopiować dane do wystąpienia obliczeniowego:
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.csvTeraz możesz zamknąć okno terminalu.
Aby uzyskać więcej informacji na temat danych w repozytorium UC Irvine Machine Learning, odwiedź ten zasób.
Tworzenie dojścia do obszaru roboczego
Przed rozpoczęciem eksplorowania kodu potrzebny jest sposób odwołowania się do obszaru roboczego.
ml_client Tworzysz jako dojście do obszaru roboczego. Następnie służy ml_client do zarządzania zasobami i zadaniami.
W następnej komórce wprowadź identyfikator subskrypcji, nazwę grupy zasobów i nazwę obszaru roboczego. Aby znaleźć następujące wartości:
- Na pasku narzędzi usługi Azure Machine Learning Studio w prawym górnym rogu wybierz nazwę obszaru roboczego.
- Skopiuj wartość obszaru roboczego, grupy zasobów i identyfikatora subskrypcji do kodu.
- Należy skopiować każdą wartość pojedynczo, pojedynczo. Zamknij obszar, wklej wartość, a następnie przejdź do następnego.
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>",
)
Uwaga
Utworzenie klasy MLClient nie spowoduje nawiązania połączenia z obszarem roboczym. Inicjowanie klienta jest leniwe i czeka po raz pierwszy, aby wykonać wywołanie. Dzieje się tak w następnej komórce kodu.
Przekazywanie danych do magazynu w chmurze
Usługa Azure Machine Learning używa identyfikatorów URI (Uniform Resource Identifiers), które wskazują lokalizacje magazynu w chmurze. Identyfikator URI ułatwia dostęp do danych w notesach i zadaniach. Formaty identyfikatorów URI danych są podobne do adresów URL sieci Web używanych w przeglądarce internetowej do uzyskiwania dostępu do stron internetowych. Na przykład:
- Uzyskiwanie dostępu do danych z publicznego serwera https:
https://<account_name>.blob.core.windows.net/<container_name>/<folder>/<file> - Uzyskiwanie dostępu do danych z usługi Azure Data Lake Gen 2:
abfss://<file_system>@<account_name>.dfs.core.windows.net/<folder>/<file>
Zasób danych usługi Azure Machine Learning jest podobny do zakładek przeglądarki internetowej (ulubione). Zamiast pamiętać długie ścieżki magazynu (URI), które wskazują najczęściej używane dane, można utworzyć zasób danych, a następnie uzyskać dostęp do tego zasobu za pomocą przyjaznej nazwy.
Tworzenie zasobu danych tworzy również odwołanie do lokalizacji źródła danych wraz z kopią metadanych. Ponieważ dane pozostają w istniejącej lokalizacji, nie ponosisz dodatkowych kosztów magazynowania i nie ryzykujesz integralności źródła danych. Zasoby danych można tworzyć na podstawie magazynów danych usługi Azure Machine Learning, usługi Azure Storage, publicznych adresów URL i plików lokalnych.
Napiwek
W przypadku mniejszych przekazywania danych tworzenie zasobów danych usługi Azure Machine Learning działa dobrze w przypadku przekazywania danych z zasobów komputera lokalnego do magazynu w chmurze. Takie podejście pozwala uniknąć konieczności korzystania z dodatkowych narzędzi lub narzędzi. Jednak większe przekazywanie danych może wymagać dedykowanego narzędzia lub narzędzia — na przykład azcopy. Narzędzie wiersza polecenia azcopy przenosi dane do i z usługi Azure Storage. Aby uzyskać więcej informacji na temat narzędzia azcopy, zobacz Get started with AzCopy (Rozpoczynanie pracy z narzędziem AzCopy).
Następna komórka notesu tworzy zasób danych. Przykładowy kod przekazuje nieprzetworzone pliki danych do wyznaczonego zasobu magazynu w chmurze.
Za każdym razem, gdy tworzysz zasób danych, potrzebna jest unikatowa wersja. Jeśli wersja już istnieje, zostanie wyświetlony błąd. W tym kodzie użyjesz ciągu "initial" dla pierwszego odczytu danych. Jeśli ta wersja już istnieje, kod nie zostanie utworzony ponownie.
Można również pominąć parametr wersji . W takim przypadku jest generowany numer wersji, począwszy od wartości 1 i przyrostowej.
W tym samouczku jest używana nazwa "initial" jako pierwsza wersja. Samouczek Tworzenie potoków uczenia maszynowego w środowisku produkcyjnym korzysta również z tej wersji danych, więc użyjesz ponownie wartości widocznej w tym samouczku.
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}")
Aby sprawdzić przekazane dane, wybierz pozycję Dane w sekcji Zasoby w menu nawigacji po lewej stronie. Dane są przekazywane i tworzony jest zasób danych:
Te dane mają nazwę karta kredytowa. Na karcie Zasoby danych można je zobaczyć w kolumnie Nazwa .
Magazyn danych usługi Azure Machine Learning to odwołanie do istniejącego konta magazynu na platformie Azure. Magazyn danych oferuje następujące korzyści:
Typowy i łatwy w użyciu interfejs API do interakcji z różnymi typami magazynu:
- Azure Data Lake Storage
- Obiekt blob
- Files
i metody uwierzytelniania.
Łatwiejszy sposób odnajdywania przydatnych magazynów danych podczas pracy jako zespół.
W skryptach sposób ukrywania informacji o połączeniu na potrzeby dostępu do danych opartych na poświadczeniach (jednostka usługi/sygnatura dostępu współdzielonego/klucz).
Uzyskiwanie dostępu do danych w notesie
Chcesz utworzyć zasoby danych dla często używanych danych. Dostęp do danych można uzyskać przy użyciu identyfikatora URI zgodnie z opisem w temacie Access data from a datastore URI,like a filesystem(System plików). Jednak, jak wspomniano wcześniej, może to być trudne do zapamiętania tych identyfikatorów URI.
Alternatywą jest użycie azureml-fsspec biblioteki, która udostępnia interfejs systemu plików dla magazynów danych usługi Azure Machine Learning. Jest to łatwiejszy sposób uzyskiwania dostępu do pliku CSV w bibliotece Pandas:
Ważne
W komórce notesu wykonaj ten kod, aby zainstalować bibliotekę azureml-fsspec języka Python w jądrze 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()
Aby uzyskać więcej informacji na temat dostępu do danych w notesie, zobacz Access data from Azure Cloud Storage during interactive development (Uzyskiwanie dostępu do danych z magazynu w chmurze platformy Azure podczas opracowywania interakcyjnego).
Tworzenie nowej wersji zasobu danych
Dane wymagają lekkiego czyszczenia, aby umożliwić trenowanie modelu uczenia maszynowego. Ma:
- Dwa nagłówki
- Kolumna identyfikatora klienta, która nie byłaby używana jako funkcja w uczeniu maszynowym
- Spacje w nazwie zmiennej odpowiedzi
Ponadto w porównaniu z formatem CSV format pliku Parquet jest lepszym sposobem przechowywania tych danych. Parquet oferuje kompresję i utrzymuje schemat. Aby wyczyścić dane i zapisać je w formacie 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")
W tej tabeli przedstawiono strukturę danych w oryginalnym pliku default_of_credit_card_clients.csv pobranym we wcześniejszym kroku. Przekazane dane zawierają 23 zmienne objaśniające i 1 zmienną odpowiedzi, jak pokazano poniżej:
| Nazwy kolumn | Typ zmiennej | opis |
|---|---|---|
| X1 | Wyjaśniające | Kwota danego kredytu (dolar NT): obejmuje zarówno kredyt konsumencki indywidualny, jak i kredyt rodzinny (dodatkowy). |
| X2 | Wyjaśniające | Płeć (1 = mężczyzna; 2 = kobieta). |
| X3 | Wyjaśniające | Edukacja (1 = szkoła absolwentów; 2 = uniwersytet; 3 = liceum; 4 = inne). |
| X4 | Wyjaśniające | Stan małżeński (1 = żonaty; 2 = samotny; 3 = inne). |
| X5 | Wyjaśniające | Wiek (lata). |
| X6-X11 | Wyjaśniające | Historia przeszłych płatności. Ostatnie miesięczne rekordy płatności śledzone od kwietnia do września 2005 r. -1 = wynagrodzenie należycie; 1 = opóźnienie płatności za jeden miesiąc; 2 = opóźnienie płatności za dwa miesiące; . . .; 8 = opóźnienie płatności przez osiem miesięcy; 9 = opóźnienie płatności przez dziewięć miesięcy i powyżej. |
| X12-17 | Wyjaśniające | Kwota zestawienia rachunku (dolar NT) od kwietnia do września 2005 r. |
| X18-23 | Wyjaśniające | Kwota poprzedniej płatności (dolar NT) od kwietnia do września 2005 r. |
| Y | Odpowiedź | Płatność domyślna (Tak = 1, Nie = 0) |
Następnie utwórz nową wersję zasobu danych. Dane są automatycznie przekazywane do magazynu w chmurze. W tej wersji dodaj wartość czasu, aby za każdym razem, gdy ten kod jest uruchamiany, tworzony jest inny numer wersji.
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}")
Oczyszczony plik Parquet jest najnowszym źródłem danych wersji. Ten kod przedstawia najpierw zestaw wyników wersji CSV, a następnie wersję 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))
Czyszczenie zasobów
Jeśli planujesz kontynuować korzystanie z innych samouczków, przejdź do sekcji Następne kroki.
Zatrzymywanie wystąpienia obliczeniowego
Jeśli nie planujesz go teraz używać, zatrzymaj wystąpienie obliczeniowe:
- W Studio w okienku po lewej stronie wybierz pozycję Komputer.
- Na pierwszych kartach wybierz pozycję Wystąpienia obliczeniowe.
- Wybierz wystąpienie obliczeniowe na liście.
- Na górnym pasku narzędzi wybierz pozycję Zatrzymaj.
Usuwanie wszystkich zasobów
Ważne
Utworzone zasoby mogą być używane jako wymagania wstępne w innych samouczkach usługi Azure Machine Learning i artykułach z instrukcjami.
Jeśli nie planujesz korzystać z żadnych utworzonych zasobów, usuń je, aby nie ponosić żadnych opłat:
W witrynie Azure Portal w polu wyszukiwania wprowadź ciąg Grupy zasobów i wybierz je z wyników.
Z listy wybierz utworzoną grupę zasobów.
Na stronie Przegląd wybierz pozycję Usuń grupę zasobów.
Wpisz nazwę grupy zasobów. Następnie wybierz Usuń.
Następne kroki
Aby uzyskać więcej informacji na temat zasobów danych, zobacz Tworzenie zasobów danych.
Aby uzyskać więcej informacji na temat magazynów danych, zobacz Tworzenie magazynów danych.
Przejdź do następnego samouczka, aby dowiedzieć się, jak opracować skrypt szkoleniowy: