Öğretici: Azure Machine Learning'de verilerinizi karşıya yükleme, erişme ve keşfetme

ŞUNLAR IÇIN GEÇERLIDIR: Python SDK'sı azure-ai-ml v2 (geçerli)

Bu öğreticide şunların nasıl yapıldığını öğrenirsiniz:

  • Verilerinizi bulut depolama alanına yükleme
  • Azure Machine Learning veri varlığı oluşturma
  • Etkileşimli geliştirme için not defterindeki verilerinize erişme
  • Veri varlıklarının yeni sürümlerini oluşturma

Makine öğrenmesi projesinin başlangıcı genellikle keşif veri analizini (EDA), veri ön işlemeyi (temizleme, özellik mühendisliği) ve hipotezleri doğrulamak için Machine Learning modeli prototiplerinin oluşturulmasını içerir. Bu prototip proje aşaması son derece etkileşimlidir. Python etkileşimli konsolu ile bir IDE veya Jupyter not defterinde geliştirme aşamasında size yardımcı olur. Bu öğreticide bu fikirler açıklanmaktadır.

Bu videoda, öğreticideki adımları izleyebilmek için Azure Machine Learning stüdyosu kullanmaya nasıl başlayabileceğiniz gösterilmektedir. Videoda not defteri oluşturma, not defterini kopyalama, işlem örneği oluşturma ve öğretici için gereken verileri indirme gösterilmektedir. Adımlar aşağıdaki bölümlerde de açıklanmıştır.

Önkoşullar

  1. Azure Machine Learning'i kullanmak için öncelikle bir çalışma alanı gerekir. Bir çalışma alanınız yoksa, çalışma alanı oluşturmaya başlamak ve bu çalışma alanını kullanma hakkında daha fazla bilgi edinmek için ihtiyacınız olan kaynakları oluşturma'yı tamamlayın.

  2. Stüdyoda oturum açın ve henüz açık değilse çalışma alanınızı seçin.

  3. Çalışma alanınızda bir not defteri açın veya oluşturun:

    • Hücrelere kod kopyalamak/yapıştırmak istiyorsanız yeni bir not defteri oluşturun.
    • Veya studio'nun Örnekler bölümünden tutorials/get-started-notebooks/explore-data.ipynb dosyasını açın. Ardından Kopyala'yı seçerek not defterini Dosyalarınıza ekleyin. (Bkz. Örneklerin bulunacağı yer.)

Çekirdeğinizi ayarlama

  1. Açık not defterinizin üst çubuğunda, henüz yoksa bir işlem örneği oluşturun.

    Screenshot shows how to create a compute instance.

  2. İşlem örneği durdurulduysa İşlemi başlat'ı seçin ve çalışana kadar bekleyin.

    Screenshot shows how to start compute if it is stopped.

  3. Sağ üst kısımda bulunan çekirdeğin olduğundan Python 3.10 - SDK v2emin olun. Aksi takdirde, bu çekirdeği seçmek için açılan listeyi kullanın.

    Screenshot shows how to set the kernel.

  4. Kimliğinizin doğrulanması gerektiğini belirten bir başlık görürseniz Kimliği Doğrula'yı seçin.

Önemli

Bu öğreticinin geri kalanı, öğretici not defterinin hücrelerini içerir. Bunları kopyalayıp yeni not defterinize yapıştırın veya kopyaladıysanız şimdi not defterine geçin.

Bu öğreticide kullanılan verileri indirin

Veri alımı için Azure Veri Gezgini ham verileri bu biçimlerde işler. Bu öğreticide bu CSV biçiminde kredi kartı istemci veri örneği kullanılmaktadır. Azure Machine Learning kaynağında devam eden adımları görüyoruz. Bu kaynakta, doğrudan bu not defterinin bulunduğu klasörün altında önerilen veri adına sahip bir yerel klasör oluşturacağız.

Not

Bu öğretici, Azure Machine Learning kaynak klasörü konumuna yerleştirilen verilere bağlıdır. Bu öğreticide 'yerel', bu Azure Machine Learning kaynağındaki bir klasör konumu anlamına gelir.

  1. Bu görüntüde gösterildiği gibi üç noktanın altındaki Terminali aç'ı seçin:

    Screenshot shows open terminal tool in notebook toolbar.

  2. Terminal penceresi yeni bir sekmede açılır.

  3. Bu not defterinin bulunduğu klasöre gittiğinize cd emin olun. Örneğin, not defteri get-started-notebooks adlı bir klasördeyse:

    cd get-started-notebooks    #  modify this to the path where your notebook is located
    
  4. Verileri işlem örneğine kopyalamak için terminal penceresine şu komutları girin:

    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. Artık terminal penceresini kapatabilirsiniz.

UCI Machine Learning Deposu'nda bu veriler hakkında daha fazla bilgi edinin.

Çalışma alanına tanıtıcı oluşturma

Kodu incelemeden önce çalışma alanınıza başvurmak için bir yönteme ihtiyacınız vardır. Çalışma alanının tanıtıcısı için oluşturacaksınız ml_client . Daha sonra kaynakları ve işleri yönetmek için kullanacaksınız ml_client .

Sonraki hücreye Abonelik Kimliğinizi, Kaynak Grubu adınızı ve Çalışma Alanı adınızı girin. Bu değerleri bulmak için:

  1. Sağ üst Azure Machine Learning stüdyosu araç çubuğunda çalışma alanı adınızı seçin.
  2. Çalışma alanı, kaynak grubu ve abonelik kimliğinin değerini koda kopyalayın.
  3. Bir değeri kopyalamanız, alanı kapatıp yapıştırmanız ve ardından bir sonraki değer için geri dönmeniz gerekir.
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>",
)

Not

MLClient oluşturma çalışma alanına bağlanmaz. İstemci başlatma yavaştır, ilk kez çağrı yapmasını bekler (bu bir sonraki kod hücresinde gerçekleşir).

Verileri bulut depolama alanına yükleme

Azure Machine Learning, buluttaki depolama konumlarına işaret eden Tekdüzen Kaynak Tanımlayıcıları 'nı (URI) kullanır. URI, not defterlerindeki ve işlerdeki verilere erişmeyi kolaylaştırır. Veri URI biçimleri, web sayfalarına erişmek için web tarayıcınızda kullandığınız web URL'lerine benzer. Örneğin:

  • Genel https sunucusundan verilere erişin: https://<account_name>.blob.core.windows.net/<container_name>/<folder>/<file>
  • Azure Data Lake 2. Nesil'den verilere erişme: abfss://<file_system>@<account_name>.dfs.core.windows.net/<folder>/<file>

Azure Machine Learning veri varlığı, web tarayıcısı yer işaretlerine (sık kullanılanlar) benzer. En sık kullandığınız verilere işaret eden uzun depolama yollarını (URI' ler) hatırlamak yerine, bir veri varlığı oluşturabilir ve bu varlığa kolay bir adla erişebilirsiniz.

Veri varlığı oluşturma, veri kaynağı konumuna bir başvuru ve meta verilerinin bir kopyasını da oluşturur. Veriler mevcut konumunda kaldığından ek depolama maliyetine neden olmaz ve veri kaynağı bütünlüğünü riske atmazsınız. Azure Machine Learning veri depoları, Azure Depolama, genel URL'ler ve yerel dosyalardan Veri varlıkları oluşturabilirsiniz.

İpucu

Daha küçük boyutlu veri yüklemeleri için Azure Machine Learning veri varlığı oluşturma, yerel makine kaynaklarından bulut depolamaya veri yüklemeleri için iyi çalışır. Bu yaklaşım, ek araçlara veya yardımcı programlara ihtiyaç duymayı önler. Ancak, daha büyük boyutlu bir veri yükleme işlemi için ayrılmış bir araç veya yardımcı program (örneğin, azcopy) gerekebilir. azcopy komut satırı aracı verileri Azure Depolama'a taşır. Azcopy hakkında daha fazla bilgiyi burada bulabilirsiniz.

Sonraki not defteri hücresi veri varlığını oluşturur. Kod örneği, ham veri dosyasını belirlenen bulut depolama kaynağına yükler.

Her veri varlığı oluşturduğunuzda, bunun için benzersiz bir sürüm gerekir. Sürüm zaten varsa bir hata alırsınız. Bu kodda, verilerin ilk okuması için "baş harfini" kullanıyoruz. Bu sürüm zaten varsa, yeniden oluşturmayı atlarız.

Ayrıca sürüm parametresini atlayabilirsiniz ve 1'den başlayıp oradan artarak sizin için bir sürüm numarası oluşturulur.

Bu öğreticide ilk sürüm olarak "initial" adını kullanacağız. Üretim makine öğrenmesi işlem hatları oluşturma öğreticisi, verilerin bu sürümünü de kullanacağı için burada bu öğreticide yeniden göreceğiniz bir değer kullanıyoruz.

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

Karşıya yüklenen verileri soldaki Veri'yi seçerek görebilirsiniz. Verilerin karşıya yüklendiğini ve bir veri varlığı oluşturulduğunu görürsünüz:

Screenshot shows the data in studio.

Bu veriler kredi kartı olarak adlandırılır ve Veri varlıkları sekmesinde Ad sütununda görebiliriz. Bu veriler, veri kaynağı sütununda görülen çalışma alanınızın workspaceblobstore adlı varsayılan veri deposuna yüklenir.

Azure Machine Learning veri deposu, Azure'daki mevcut bir depolama hesabına başvurudur. Veri deposu şu avantajları sunar:

  1. Farklı depolama türleri (Blob/Dosyalar/Azure Data Lake Depolama) ve kimlik doğrulama yöntemleriyle etkileşime geçmek için yaygın ve kullanımı kolay bir API.
  2. Ekip olarak çalışırken yararlı veri depolarını bulmanın daha kolay bir yolu.
  3. Betiklerinizde, kimlik bilgisi tabanlı veri erişimi (hizmet sorumlusu/SAS/anahtar) için bağlantı bilgilerini gizlemenin bir yolu.

Not defterindeki verilerinize erişme

Pandas doğrudan URI'leri destekler- Bu örnekte, Azure Machine Learning Veri Deposundan CSV dosyasının nasıl okunduğu gösterilmektedir:

import pandas as pd

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

Ancak, daha önce belirtildiği gibi, bu URI'leri hatırlamak zor olabilir. Ayrıca, pd.read_csv komutundaki tüm< alt dize> değerlerini kaynaklarınız için gerçek değerlerle el ile değiştirmelisiniz.

Sık erişilen veriler için veri varlıkları oluşturmak istersiniz. Pandas'ta CSV dosyasına erişmenin daha kolay bir yolu aşağıdadır:

Önemli

Not defteri hücresinde şu kodu yürüterek Python kitaplığını azureml-fsspec Jupyter çekirdeğinize yükleyin:

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

Not defterindeki veri erişimi hakkında daha fazla bilgi edinmek için etkileşimli geliştirme sırasında Azure bulut depolamadan verilere erişme'yi okuyun.

Veri varlığının yeni bir sürümünü oluşturma

Bir makine öğrenmesi modelini eğitmeye uygun hale getirmek için verilerin biraz hafif temizlemeye ihtiyacı olduğunu fark etmiş olabilirsiniz. Şu şekildedir:

  • iki üst bilgi
  • bir istemci kimliği sütunu; Bu özelliği Machine Learning'de kullanmayacağız
  • yanıt değişkeni adında boşluklar

Ayrıca, CSV biçimiyle karşılaştırıldığında, Parquet dosya biçimi bu verileri depolamak için daha iyi bir yol haline gelir. Parquet sıkıştırma sunar ve şemayı korur. Bu nedenle, verileri temizlemek ve Parquet'de depolamak için şunu kullanın:

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

Bu tablo, özgün default_of_credit_card_clients.csv dosyasındaki verilerin yapısını gösterir. Önceki bir adımda indirilen CSV dosyası. Karşıya yüklenen veriler, burada gösterildiği gibi 23 açıklayıcı değişken ve 1 yanıt değişkeni içerir:

Sütun Adları Değişken Türü Açıklama
X1 Açıklayıcı Verilen kredinin miktarı (NT dolar): Hem bireysel tüketici kredisini hem de aile (ek) kredisini içerir.
X2 Açıklayıcı Cinsiyet (1 = erkek; 2 = kadın).
X3 Açıklayıcı Eğitim (1 = lisansüstü okul; 2 = üniversite; 3 = lise; 4 = diğerleri).
X4 Açıklayıcı Medeni durum (1 = evli; 2 = bekar; 3 = diğerleri).
X5 Açıklayıcı Yaş (yıl).
X6-X11 Açıklayıcı Geçmiş ödemenin geçmişi. Geçmiş aylık ödeme kayıtlarını takip ettik (Nisan ile Eylül 2005 arasında). -1 = düzgün ödeme; 1 = bir ay boyunca ödeme gecikmesi; 2 = iki ay boyunca ödeme gecikmesi; . . .; 8 = sekiz ay boyunca ödeme gecikmesi; 9 = dokuz ay ve üzeri için ödeme gecikmesi.
X12-17 Açıklayıcı Nisan ile Eylül 2005 arasında fatura ekstresi (NT dolar) tutarı.
X18-23 Açıklayıcı Nisan ile Eylül 2005 arasında önceki ödeme tutarı (NT dolar).
Y Response Varsayılan ödeme (Evet = 1, Hayır = 0)

Ardından, veri varlığının yeni bir sürümünü oluşturun (veriler otomatik olarak bulut depolama alanına yüklenir). Bu sürüm için bir saat değeri ekleyeceğiz, böylece bu kod her çalıştırıldığında farklı bir sürüm numarası oluşturulur.

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

Temizlenen parquet dosyası en son sürüm veri kaynağıdır. Bu kod önce CSV sürüm sonuç kümesini, ardından Parquet sürümünü gösterir:

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

Kaynakları temizleme

Şimdi diğer öğreticilere devam etmek istiyorsanız Sonraki adımlar'a atlayın.

İşlem örneğini durdurma

Şimdi kullanmayacaksanız işlem örneğini durdurun:

  1. Stüdyoda, sol gezinti alanında İşlem'i seçin.
  2. Üst sekmelerde İşlem örnekleri'ni seçin
  3. Listeden işlem örneğini seçin.
  4. Üst araç çubuğunda Durdur'u seçin.

Tüm kaynakları silme

Önemli

Oluşturduğunuz kaynaklar, diğer Azure Machine Learning öğreticileri ve nasıl yapılır makaleleri için önkoşul olarak kullanılabilir.

Oluşturduğunuz kaynaklardan hiçbirini kullanmayı planlamıyorsanız, ücret ödememek için bunları silin:

  1. Azure portalının en sol tarafındaki Kaynak gruplarını seçin.

  2. Listeden, oluşturduğunuz kaynak grubunu seçin.

  3. Kaynak grubunu sil'i seçin.

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

  4. Kaynak grubu adını girin. Ardından Sil'i seçin.

Sonraki adımlar

Veri varlıkları hakkında daha fazla bilgi için Bkz. Veri varlıkları oluşturma.

Veri depoları hakkında daha fazla bilgi edinmek için Bkz. Veri depoları oluşturma.

Eğitim betiği geliştirmeyi öğrenmek için öğreticilerle devam edin.