Bagikan melalui


Bekerja dengan tabel di Azure Pembelajaran Mesin

BERLAKU UNTUK:Ekstensi ml Azure CLI v2 (saat ini)Python SDK azure-ai-ml v2 (saat ini)

Azure Pembelajaran Mesin mendukung jenis Tabel (mltable). Ini memungkinkan pembuatan cetak biru yang menentukan cara memuat file data ke dalam memori sebagai bingkai data Pandas atau Spark. Dalam artikel ini, Anda belajar tentang:

  • Kapan menggunakan Tabel Pembelajaran Mesin Azure alih-alih File atau Folder
  • Cara menginstal mltable SDK
  • Cara menentukan cetak biru pemuatan data menggunakan mltable file
  • Contoh yang memperlihatkan cara mltable digunakan di Azure Pembelajaran Mesin
  • Cara menggunakan mltable selama pengembangan interaktif (misalnya, dalam buku catatan)

Prasyarat

Penting

Pastikan Anda memiliki paket terbaru mltable yang terinstal di lingkungan Python Anda:

pip install -U mltable azureml-dataprep[pandas]

Mengkloning repositori contoh

Cuplikan kode dalam artikel ini didasarkan pada contoh dalam contoh Azure Pembelajaran Mesin repositori GitHub. Untuk mengkloning repositori ke lingkungan pengembangan Anda, gunakan perintah ini:

git clone --depth 1 https://github.com/Azure/azureml-examples

Tip

Gunakan --depth 1 untuk mengkloning hanya penerapan terbaru ke repositori. Ini mengurangi waktu yang diperlukan untuk menyelesaikan operasi.

Anda dapat menemukan contoh yang relevan dengan Azure Pembelajaran Mesin Tables di folder repositori kloning ini:

cd azureml-examples/sdk/python/using-mltable

Pendahuluan

Azure Pembelajaran Mesin Tables (mltable) memungkinkan Anda menentukan bagaimana Anda ingin memuat file data ke dalam memori, sebagai bingkai data Pandas dan/atau Spark. Tabel memiliki dua fitur utama:

  1. File MLTable. File berbasis YAML yang menentukan cetak biru pemuatan data. Dalam file MLTable, Anda dapat menentukan:
    • Lokasi penyimpanan atau lokasi data - lokal, di cloud, atau di server http publik.
    • Pola globbing melalui penyimpanan cloud. Lokasi ini dapat menentukan set nama file, dengan karakter kartubebas (*).
    • transformasi baca - misalnya, jenis format file (teks yang dibatasi , Parquet, Delta, json), pemisah, header, dll.
    • Konversi jenis kolom (untuk memberlakukan skema).
    • Pembuatan kolom baru, menggunakan informasi struktur folder - misalnya, pembuatan kolom tahun dan bulan, menggunakan {year}/{month} struktur folder di jalur.
    • Subset data yang akan dimuat - misalnya, memfilter baris, menyimpan/meletakkan kolom, mengambil sampel acak.
  2. Mesin yang cepat dan efisien untuk memuat data ke dalam dataframe Pandas atau Spark, sesuai dengan cetak biru yang ditentukan dalam file MLTable. Mesin mengandalkan Rust untuk kecepatan tinggi dan efisiensi memori.

Azure Pembelajaran Mesin Tables berguna dalam skenario ini:

  • Anda perlu melakukan glob di lokasi penyimpanan.
  • Anda perlu membuat tabel menggunakan data dari lokasi penyimpanan yang berbeda (misalnya, kontainer blob yang berbeda).
  • Jalur berisi informasi relevan yang ingin Anda ambil dalam data Anda (misalnya, tanggal dan waktu).
  • Skema data sering berubah.
  • Anda menginginkan reproduksi langkah-langkah pemuatan data yang mudah.
  • Anda hanya memerlukan subset data besar.
  • Data Anda berisi lokasi penyimpanan yang ingin Anda streaming ke sesi Python Anda. Misalnya, Anda ingin melakukan streaming path dalam struktur baris JSON berikut: [{"path": "abfss://fs@account.dfs.core.windows.net/my-images/cats/001.jpg", "label":"cat"}].
  • Anda ingin melatih model ML menggunakan Azure Pembelajaran Mesin AutoML.

Tip

Untuk data tabular, Azure Pembelajaran Mesin tidak memerlukan penggunaan Azure Pembelajaran Mesin Tables (mltable). Anda dapat menggunakan jenis Azure Pembelajaran Mesin File (uri_file) dan Folder (uri_folder), dan logika penguraian Anda sendiri memuat data ke dalam bingkai data Pandas atau Spark.

Untuk file CSV sederhana atau folder Parquet, lebih mudah untuk menggunakan Azure Pembelajaran Mesin Files/Folders alih-alih Tabel.

Mulai Cepat Tabel Azure Pembelajaran Mesin

Dalam mulai cepat ini, Anda membuat Tabel (mltable) Data Taksi Hijau NYC dari Azure Open Datasets. Data memiliki format parkek, dan mencakup tahun 2008-2021. Pada akun penyimpanan blob yang dapat diakses publik, file data memiliki struktur folder ini:

/
└── green
    ├── puYear=2008
    │   ├── puMonth=1
    │   │   ├── _committed_2983805876188002631
    │   │   └── part-XXX.snappy.parquet
    │   ├── ...
    │   └── puMonth=12
    │       ├── _committed_2983805876188002631
    │       └── part-XXX.snappy.parquet
    ├── ...
    └── puYear=2021
        ├── puMonth=1
        │   ├── _committed_2983805876188002631
        │   └── part-XXX.snappy.parquet
        ├── ...
        └── puMonth=12
            ├── _committed_2983805876188002631
            └── part-XXX.snappy.parquet

Dengan data ini, Anda perlu memuat ke dalam bingkai data Pandas:

  • Hanya file parket untuk tahun 2015-19
  • Sampel acak data
  • Hanya baris dengan jarak sobek yang lebih besar dari 0
  • Kolom yang relevan untuk Pembelajaran Mesin
  • Kolom baru - tahun dan bulan - menggunakan informasi jalur (puYear=X/puMonth=Y)

Kode Panda menangani ini. Namun, mencapai reproduktifitas akan menjadi sulit karena Anda harus:

  • Bagikan kode, yang berarti bahwa jika skema berubah (misalnya, nama kolom mungkin berubah) maka semua pengguna harus memperbarui kode mereka
  • Menulis alur ETL, yang memiliki overhead berat

Azure Pembelajaran Mesin Tables menyediakan mekanisme ringan untuk membuat serialisasi (menyimpan) langkah-langkah pemuatan data dalam MLTable file. Kemudian, Anda dan anggota tim Anda dapat mereproduksi bingkai data Pandas. Jika skema berubah, Anda hanya memperbarui MLTable file, alih-alih pembaruan di banyak tempat yang melibatkan kode pemuatan data Python.

Mengkloning buku catatan mulai cepat atau membuat buku catatan/skrip baru

Jika Anda menggunakan instans komputasi Azure Pembelajaran Mesin, Buat buku catatan baru. Jika Anda menggunakan IDE, Anda harus membuat skrip Python baru.

Selain itu, buku catatan mulai cepat tersedia di azure Pembelajaran Mesin contoh repositori GitHub. Gunakan kode ini untuk mengkloning dan mengakses Notebook:

git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/sdk/python/using-mltable/quickstart

mltable Menginstal Python SDK

Untuk memuat Data Taksi Hijau NYC ke dalam Tabel Pembelajaran Mesin Azure, Anda harus memiliki mltable Python SDK dan pandas diinstal di lingkungan Python Anda, dengan perintah ini:

pip install -U mltable azureml-dataprep[pandas]

Menulis file MLTable

mltable Gunakan Python SDK untuk membuat file MLTable, untuk mendokumen cetak biru pemuatan data. Untuk ini, salin dan tempel kode berikut ke Notebook/Script Anda, lalu jalankan kode tersebut:

import mltable

# glob the parquet file paths for years 2015-19, all months.
paths = [
    {
        "pattern": "wasbs://nyctlc@azureopendatastorage.blob.core.windows.net/green/puYear=2015/puMonth=*/*.parquet"
    },
    {
        "pattern": "wasbs://nyctlc@azureopendatastorage.blob.core.windows.net/green/puYear=2016/puMonth=*/*.parquet"
    },
    {
        "pattern": "wasbs://nyctlc@azureopendatastorage.blob.core.windows.net/green/puYear=2017/puMonth=*/*.parquet"
    },
    {
        "pattern": "wasbs://nyctlc@azureopendatastorage.blob.core.windows.net/green/puYear=2018/puMonth=*/*.parquet"
    },
    {
        "pattern": "wasbs://nyctlc@azureopendatastorage.blob.core.windows.net/green/puYear=2019/puMonth=*/*.parquet"
    },
]

# create a table from the parquet paths
tbl = mltable.from_parquet_files(paths)

# table a random sample
tbl = tbl.take_random_sample(probability=0.001, seed=735)

# filter trips with a distance > 0
tbl = tbl.filter("col('tripDistance') > 0")

# Drop columns
tbl = tbl.drop_columns(["puLocationId", "doLocationId", "storeAndFwdFlag"])

# Create two new columns - year and month - where the values are taken from the path
tbl = tbl.extract_columns_from_partition_format("/puYear={year}/puMonth={month}")

# print the first 5 records of the table as a check
tbl.show(5)

Anda dapat secara opsional memilih untuk memuat objek MLTable ke Pandas, menggunakan:

# You can load the table into a pandas dataframe
# NOTE: The data is in East US region and the data is large, so this will take several minutes (~7mins)
# to load if you are in a different region.

# df = tbl.to_pandas_dataframe()

Menyimpan langkah-langkah pemuatan data

Selanjutnya, simpan semua langkah pemuatan data Anda ke dalam file MLTable. Menyimpan langkah-langkah pemuatan data Anda dalam file MLTable memungkinkan Anda mereproduksi bingkai data Pandas Anda di lain waktu, tanpa perlu menentukan ulang kode setiap kali.

Anda dapat menyimpan file yaml MLTable ke sumber daya penyimpanan cloud, atau Anda dapat menyimpannya ke sumber daya jalur lokal.

# save the data loading steps in an MLTable file to a cloud storage resource
# NOTE: the tbl object was defined in the previous snippet.
tbl.save(path="azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<wsname>/datastores/<name>/paths/titanic", colocated=True, show_progress=True, overwrite=True)
# save the data loading steps in an MLTable file to a local resource
# NOTE: the tbl object was defined in the previous snippet.
tbl.save("./titanic")

Penting

  • Jika colocated == True, maka kita akan menyalin data ke folder yang sama dengan file yaml MLTable jika saat ini tidak dikolokasi, dan kita akan menggunakan jalur relatif di MLTable yaml.
  • Jika colocated == False, kami tidak akan memindahkan data, kami akan menggunakan jalur absolut untuk data cloud, dan menggunakan jalur relatif untuk data lokal.
  • Kami tidak mendukung kombinasi parameter ini: data disimpan dalam sumber daya lokal, colocated == False, path menargetkan direktori cloud. Silakan unggah data lokal Anda ke cloud, dan gunakan jalur data cloud untuk MLTable sebagai gantinya.

Mereprodusi langkah-langkah pemuatan data

Sekarang setelah Anda menserialisasikan langkah-langkah pemuatan data ke dalam file, Anda dapat mereproduksinya kapan saja dengan metode load(). Dengan cara ini, Anda tidak perlu menentukan ulang langkah-langkah pemuatan data dalam kode, dan Anda dapat dengan lebih mudah berbagi file.

import mltable

# load the previously saved MLTable file
tbl = mltable.load("./nyc_taxi/")
tbl.show(5)

# You can load the table into a pandas dataframe
# NOTE: The data is in East US region and the data is large, so this will take several minutes (~7mins)
# to load if you are in a different region.

# load the table into pandas
# df = tbl.to_pandas_dataframe()

# print the head of the data frame
# df.head()
# print the shape and column types of the data frame
# print(f"Shape: {df.shape}")
# print(f"Columns:\n{df.dtypes}")

Membuat aset data untuk membantu berbagi dan reproduktifitas

File MLTable Anda mungkin saat ini disimpan di disk, yang membuatnya sulit untuk dibagikan dengan anggota tim. Saat Anda membuat aset data di Azure Pembelajaran Mesin, MLTable Anda diunggah ke penyimpanan cloud dan "marka buku." Anggota tim Anda kemudian dapat mengakses MLTable dengan nama yang mudah diingat. Selain itu, aset data diberi versi.

az ml data create --name green-quickstart --version 1 --path ./nyc_taxi --type mltable

Catatan

Jalur menunjuk ke folder yang berisi MLTable file.

Membaca aset data dalam sesi interaktif

Setelah MLTable disimpan di cloud, Anda dan anggota tim dapat mengaksesnya dengan nama yang mudah diingat dalam sesi interaktif (misalnya, buku catatan):

import mltable
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

# connect to the AzureML workspace
# NOTE: the subscription_id, resource_group, workspace variables are set
# in a previous code snippet.
ml_client = MLClient(
    DefaultAzureCredential(), subscription_id, resource_group, workspace
)

# get the latest version of the data asset
# Note: The version was set in the previous snippet. If you changed the version
# number, update the VERSION variable below.
VERSION="1"
data_asset = ml_client.data.get(name="green-quickstart", version=VERSION)

# create a table
tbl = mltable.load(f"azureml:/{data_asset.id}")
tbl.show(5)

# load into pandas
# NOTE: The data is in East US region and the data is large, so this will take several minutes (~7mins) to load if you are in a different region.
df = tbl.to_pandas_dataframe()

Membaca aset data dalam pekerjaan

Jika Anda atau anggota tim ingin mengakses Tabel dalam pekerjaan, skrip pelatihan Python Anda akan berisi:

# ./src/train.py
import argparse
import mltable

# parse arguments
parser = argparse.ArgumentParser()
parser.add_argument('--input', help='mltable to read')
args = parser.parse_args()

# load mltable
tbl = mltable.load(args.input)

# load into pandas
df = tbl.to_pandas_dataframe()

Pekerjaan Anda memerlukan file conda yang menyertakan dependensi paket Python:

# ./conda_dependencies.yml
dependencies:
  - python=3.10
  - pip=21.2.4
  - pip:
      - mltable
      - azureml-dataprep[pandas]

Anda akan mengirimkan pekerjaan menggunakan:

Buat file YAML pekerjaan berikut:

# mltable-job.yml
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json

code: ./src

command: python train.py --input ${{inputs.green}}
inputs:
    green:
      type: mltable
      path: azureml:green-quickstart:1

compute: cpu-cluster

environment:
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
  conda_file: conda_dependencies.yml

Di CLI, buat pekerjaan:

az ml job create -f mltable-job.yml

Menulis File MLTable

Untuk membuat file MLTable secara langsung, kami sarankan Anda menggunakan mltable Python SDK untuk menulis file MLTable Anda - seperti yang ditunjukkan di Mulai Cepat Tabel Azure Pembelajaran Mesin - alih-alih editor teks. Di bagian ini, kami menguraikan kemampuan di mltable Python SDK.

Jenis file yang didukung

Anda dapat membuat MLTable dengan rentang jenis file yang berbeda:

Tipe File MLTable Python SDK
Teks Berbatas
(misalnya, file CSV)
from_delimited_files(paths=[path])
Parquet from_parquet_files(paths=[path])
Delta Lake from_delta_lake(delta_table_uri=<uri_pointing_to_delta_table_directory>,timestamp_as_of='2022-08-26T00:00:00Z')
Baris JSON from_json_lines_files(paths=[path])
Jalur
(Buat tabel dengan kolom jalur yang akan dialirkan)
from_paths(paths=[path])

Untuk informasi selengkapnya, baca sumber daya referensi MLTable

Menentukan jalur

Untuk teks, parket, baris JSON, dan jalur yang dibatasi, tentukan daftar kamus Python yang menentukan jalur atau jalur untuk dibaca:

import mltable

# A List of paths to read into the table. The paths are a python dict that define if the path is
# a file, folder, or (glob) pattern.
paths = [
    {
        "file": "<supported_path>"
    }
]

tbl = mltable.from_delimited_files(paths=paths)

# alternatively
# tbl = mltable.from_parquet_files(paths=paths)
# tbl = mltable.from_json_lines_files(paths=paths)
# tbl = mltable.from_paths(paths=paths)

MLTable mendukung jenis jalur ini:

Lokasi Contoh
Jalur pada komputer lokal Anda ./home/username/data/my_data
Jalur pada server http milik publik https://raw.githubusercontent.com/pandas-dev/pandas/main/doc/data/titanic.csv
Jalur pada Azure Storage wasbs://<container_name>@<account_name>.blob.core.windows.net/<path>
abfss://<file_system>@<account_name>.dfs.core.windows.net/<path>
Datastore Azure Pembelajaran Mesin bentuk panjang azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<wsname>/datastores/<name>/paths/<path>

Catatan

mltablemenangani passthrough kredensial pengguna untuk jalur di Azure Storage dan azure Pembelajaran Mesin datastore. Jika Anda tidak memiliki izin ke data pada penyimpanan yang mendasar, Anda tidak dapat mengakses data.

Catatan tentang menentukan jalur untuk Delta Lake Tables

Dibandingkan dengan jenis file lainnya, menentukan jalur untuk membaca tabel Delta Lake berbeda. Untuk tabel Delta Lake, jalur menunjuk ke satu folder (biasanya pada ADLS gen2) yang berisi folder "_delta_log" dan file data. perjalanan waktu didukung. Kode berikut menunjukkan cara menentukan jalur untuk tabel Delta Lake:

import mltable

# define the cloud path containing the delta table (where the _delta_log file is stored)
delta_table = "abfss://<file_system>@<account_name>.dfs.core.windows.net/<path_to_delta_table>"

# create an MLTable. Note the timestamp_as_of parameter for time travel.
tbl = mltable.from_delta_lake(
    delta_table_uri=delta_table,
    timestamp_as_of='2022-08-26T00:00:00Z'
)

Untuk mendapatkan versi terbaru data Delta Lake, Anda dapat meneruskan tanda waktu saat ini ke timestamp_as_of.

import mltable

# define the relative path containing the delta table (where the _delta_log file is stored)
delta_table_path = "./working-directory/delta-sample-data"

# get the current timestamp in the required format
current_timestamp = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())
print(current_timestamp)
tbl = mltable.from_delta_lake(delta_table_path, timestamp_as_of=current_timestamp)
df = tbl.to_pandas_dataframe()

Penting

Batasan: mltable tidak mendukung ekstraksi kunci partisi saat membaca data dari Delta Lake. mltable Transformasi extract_columns_from_partition_format tidak akan berfungsi saat Anda membaca data Delta Lake melalui mltable.

Penting

mltablemenangani passthrough kredensial pengguna untuk jalur di Azure Storage dan azure Pembelajaran Mesin datastore. Jika Anda tidak memiliki izin ke data pada penyimpanan yang mendasar, Anda tidak dapat mengakses data.

File, folder, dan glob

Azure Pembelajaran Mesin Tables mendukung pembacaan dari:

  • file, misalnya: abfss://<file_system>@<account_name>.dfs.core.windows.net/my-csv.csv
  • folder, misalnya abfss://<file_system>@<account_name>.dfs.core.windows.net/my-folder/
  • pola glob , misalnya abfss://<file_system>@<account_name>.dfs.core.windows.net/my-folder/*.csv
  • kombinasi file, folder, dan pola globbing

Transformasi pemuatan data yang didukung

Temukan detail lengkap terbaru dari transformasi pemuatan data yang didukung dalam dokumentasi referensi MLTable.

Contoh

Contoh dalam contoh Azure Pembelajaran Mesin repositori GitHub menjadi dasar untuk cuplikan kode dalam artikel ini. Gunakan perintah ini untuk mengkloning repositori ke lingkungan pengembangan Anda:

git clone --depth 1 https://github.com/Azure/azureml-examples

Tip

Gunakan --depth 1 untuk mengkloning hanya penerapan terbaru ke repositori. Ini mengurangi waktu yang diperlukan untuk menyelesaikan operasi.

Folder repositori kloning ini menghosting contoh yang relevan dengan Azure Pembelajaran Mesin Tables:

cd azureml-examples/sdk/python/using-mltable

File dibatasi

Pertama, buat MLTable dari file CSV dengan kode ini:

import mltable
from mltable import MLTableHeaders, MLTableFileEncoding, DataType

# create paths to the data files
paths = [{"file": "wasbs://data@azuremlexampledata.blob.core.windows.net/titanic.csv"}]

# create an MLTable from the data files
tbl = mltable.from_delimited_files(
    paths=paths,
    delimiter=",",
    header=MLTableHeaders.all_files_same_headers,
    infer_column_types=True,
    include_path_column=False,
    encoding=MLTableFileEncoding.utf8,
)

# filter out rows undefined ages
tbl = tbl.filter("col('Age') > 0")

# drop PassengerId
tbl = tbl.drop_columns(["PassengerId"])

# ensure survived column is treated as boolean
data_types = {
    "Survived": DataType.to_bool(
        true_values=["True", "true", "1"], false_values=["False", "false", "0"]
    )
}
tbl = tbl.convert_column_types(data_types)

# show the first 5 records
tbl.show(5)

# You can also load into pandas...
# df = tbl.to_pandas_dataframe()
# df.head(5)

Menyimpan langkah-langkah pemuatan data

Selanjutnya, simpan semua langkah pemuatan data Anda ke dalam file MLTable. Saat menyimpan langkah-langkah pemuatan data dalam file MLTable, Anda dapat mereproduksi bingkai data Pandas anda di lain waktu, tanpa perlu menentukan ulang kode setiap kali.

# save the data loading steps in an MLTable file
# NOTE: the tbl object was defined in the previous snippet.
tbl.save("./titanic")

Mereprodusi langkah-langkah pemuatan data

Sekarang setelah file memiliki langkah-langkah pemuatan data berseri, Anda dapat mereproduksinya kapan saja dengan metode .load() Dengan cara ini, Anda tidak perlu menentukan ulang langkah-langkah pemuatan data dalam kode, dan Anda dapat dengan lebih mudah berbagi file.

import mltable

# load the previously saved MLTable file
tbl = mltable.load("./titanic/")

Membuat aset data untuk membantu berbagi dan reproduktifitas

File MLTable Anda mungkin saat ini disimpan di disk, yang membuatnya sulit untuk dibagikan dengan anggota tim. Saat Anda membuat aset data di Azure Pembelajaran Mesin, MLTable Anda diunggah ke penyimpanan cloud dan "marka buku." Anggota tim Anda kemudian dapat mengakses MLTable dengan nama yang mudah diingat. Selain itu, aset data diberi versi.

import time
from azure.ai.ml import MLClient
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes
from azure.identity import DefaultAzureCredential

# Update with your details...
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AML_WORKSPACE_NAME>"

# set the version number of the data asset to the current UTC time
VERSION = time.strftime("%Y.%m.%d.%H%M%S", time.gmtime())

# connect to the AzureML workspace
ml_client = MLClient(
    DefaultAzureCredential(), subscription_id, resource_group, workspace
)

my_data = Data(
    path="./titanic",
    type=AssetTypes.MLTABLE,
    description="The titanic dataset.",
    name="titanic-cloud-example",
    version=VERSION,
)

ml_client.data.create_or_update(my_data)

Setelah MLTable disimpan di cloud, Anda dan anggota tim dapat mengaksesnya dengan nama yang mudah diingat dalam sesi interaktif (misalnya, buku catatan):

import mltable
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

# connect to the AzureML workspace
# NOTE:  subscription_id, resource_group, workspace were set in a previous snippet.
ml_client = MLClient(
    DefaultAzureCredential(), subscription_id, resource_group, workspace
)

# get the latest version of the data asset
# Note: The version was set in the previous code cell.
data_asset = ml_client.data.get(name="titanic-cloud-example", version=VERSION)

# create a table
tbl = mltable.load(f"azureml:/{data_asset.id}")

# load into pandas
df = tbl.to_pandas_dataframe()
df.head(5)

Anda juga dapat dengan mudah mengakses aset data dalam pekerjaan.

File parket

Mulai Cepat Azure Pembelajaran Mesin Tables menjelaskan cara membaca file parket.

Jalur: Membuat tabel file gambar

Anda dapat membuat tabel yang berisi jalur pada penyimpanan cloud. Contoh ini memiliki beberapa gambar anjing dan kucing yang terletak di penyimpanan cloud, dalam struktur folder berikut:

/pet-images
  /cat
    0.jpeg
    1.jpeg
    ...
  /dog
    0.jpeg
    1.jpeg

mltable dapat membuat tabel yang berisi jalur penyimpanan gambar-gambar ini dan nama foldernya (label), yang dapat digunakan untuk mengalirkan gambar. Kode ini membuat MLTable:

import mltable

# create paths to the data files
paths = [{"pattern": "wasbs://data@azuremlexampledata.blob.core.windows.net/pet-images/**/*.jpg"}]

# create the mltable
tbl = mltable.from_paths(paths)

# extract useful information from the path
tbl = tbl.extract_columns_from_partition_format("{account}/{container}/{folder}/{label}")

tbl = tbl.drop_columns(["account", "container", "folder"])

df = tbl.to_pandas_dataframe()
print(df.head())

# save the data loading steps in an MLTable file
tbl.save("./pets")

Kode ini menunjukkan cara membuka lokasi penyimpanan di bingkai data Pandas, dan memplot gambar:

# plot images on a grid. Note this takes ~1min to execute.
import matplotlib.pyplot as plt
from PIL import Image

fig = plt.figure(figsize=(20, 20))
columns = 4
rows = 5
for i in range(1, columns*rows +1):
    with df.Path[i].open() as f:
        img = Image.open(f)
        fig.add_subplot(rows, columns, i)
        plt.imshow(img)
        plt.title(df.label[i])

Membuat aset data untuk membantu berbagi dan reproduktifitas

File Anda mltable mungkin saat ini disimpan di disk, yang membuatnya sulit untuk dibagikan dengan anggota tim. Saat Anda membuat aset data di Azure Pembelajaran Mesin, aset tersebut mltable diunggah ke penyimpanan cloud dan "diberi marka buku." Anggota tim Anda kemudian dapat mengakses dengan nama yang mudah diingatmltable. Selain itu, aset data diberi versi.

import time
from azure.ai.ml import MLClient
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes
from azure.identity import DefaultAzureCredential

# set the version number of the data asset to the current UTC time
VERSION = time.strftime("%Y.%m.%d.%H%M%S", time.gmtime())

# connect to the AzureML workspace
# NOTE: subscription_id, resource_group, workspace were set in a previous snippet.
ml_client = MLClient(
    DefaultAzureCredential(), subscription_id, resource_group, workspace
)

my_data = Data(
    path="./pets",
    type=AssetTypes.MLTABLE,
    description="A sample of cat and dog images",
    name="pets-mltable-example",
    version=VERSION,
)

ml_client.data.create_or_update(my_data)

Sekarang setelah mltable disimpan di cloud, Anda dan anggota tim Anda dapat mengaksesnya dengan nama yang mudah diingat dalam sesi interaktif (misalnya, buku catatan):

import mltable
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

# connect to the AzureML workspace
# NOTE: subscription_id, resource_group, workspace were set in a previous snippet.
ml_client = MLClient(
    DefaultAzureCredential(), subscription_id, resource_group, workspace
)

# get the latest version of the data asset
# Note: the variable VERSION is set in the previous code
data_asset = ml_client.data.get(name="pets-mltable-example", version=VERSION)

# the table from the data asset id
tbl = mltable.load(f"azureml:/{data_asset.id}")

# load into pandas
df = tbl.to_pandas_dataframe()
df.head()

Anda juga dapat memuat data ke dalam pekerjaan Anda.

Langkah berikutnya