Penulisan transformasi kustom di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy

Penulisan transformasi kustom di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy

“Alih-alih berfokus pada kode, perusahaan harus berfokus pada pengembangan praktik rekayasa sistematis untuk meningkatkan data dengan cara yang andal, efisien, dan sistematis. Dengan kata lain, perusahaan perlu beralih dari pendekatan model-sentris ke pendekatan data-sentris.” – Andrew Ng

Pendekatan AI yang berpusat pada data melibatkan pembangunan sistem AI dengan data berkualitas yang melibatkan persiapan data dan rekayasa fitur. Ini bisa menjadi tugas yang membosankan yang melibatkan pengumpulan data, penemuan, pembuatan profil, pembersihan, penataan, transformasi, pengayaan, validasi, dan penyimpanan data dengan aman.

Pengatur Data Amazon SageMaker adalah layanan di Studio Amazon SageMaker yang memberikan solusi end-to-end untuk mengimpor, menyiapkan, mengubah, menampilkan, dan menganalisis data menggunakan sedikit atau tanpa pengkodean. Anda dapat mengintegrasikan alur persiapan data Data Wrangler ke dalam alur kerja pembelajaran mesin (ML) Anda untuk menyederhanakan prapemrosesan data dan rekayasa fitur, membawa persiapan data ke produksi lebih cepat tanpa perlu membuat kode PySpark, menginstal Apache Spark, atau menjalankan kluster.

Untuk skenario di mana Anda perlu menambahkan skrip kustom Anda sendiri untuk transformasi data, Anda dapat menulis logika transformasi Anda di Pandas, PySpark, PySpark SQL. Data Wrangler sekarang mendukung pustaka NLTK dan SciPy untuk menulis transformasi khusus guna menyiapkan data teks untuk ML dan melakukan pengoptimalan kendala.

Anda mungkin mengalami skenario di mana Anda harus menambahkan skrip kustom Anda sendiri untuk transformasi data. Dengan kemampuan transformasi kustom Data Wrangler, Anda dapat menulis logika transformasi Anda di Pandas, PySpark, PySpark SQL.

Dalam postingan ini, kami membahas bagaimana Anda dapat menulis transformasi khusus Anda di NLTK untuk menyiapkan data teks untuk ML. Kami juga akan membagikan beberapa contoh transformasi kode khusus menggunakan kerangka kerja umum lainnya seperti NLTK, NumPy, SciPy, dan scikit-learn serta Layanan AI AWS. Untuk tujuan latihan ini, kami menggunakan Kumpulan data Titanic, kumpulan data populer di komunitas ML, yang kini telah ditambahkan sebagai a contoh kumpulan data dalam Data Wrangler.

Ikhtisar solusi

Data Wrangler menyediakan lebih dari 40 konektor bawaan untuk mengimpor data. Setelah data diimpor, Anda dapat membuat analisis dan transformasi data menggunakan lebih dari 300 transformasi bawaan. Anda kemudian dapat membuat jaringan pipa industri untuk mendorong fitur tersebut Layanan Penyimpanan Sederhana Amazon (Amazon S3) atau Toko Fitur Amazon SageMaker. Diagram berikut menunjukkan arsitektur tingkat tinggi end-to-end.

Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Prasyarat

Data Wrangler adalah fitur SageMaker yang tersedia di dalamnya Studio Amazon SageMaker. Anda dapat mengikuti proses orientasi Studio untuk mengaktifkan lingkungan Studio dan notebook. Meskipun Anda dapat memilih dari beberapa metode autentikasi, cara termudah untuk membuat domain Studio adalah dengan mengikuti Instruksi mulai cepat. Mulai cepat menggunakan pengaturan default yang sama dengan pengaturan Studio standar. Anda juga dapat memilih untuk menggunakan Pusat Identitas AWS IAM (penerus AWS Single Sign-On) untuk autentikasi (lihat Masuk ke Domain Amazon SageMaker Menggunakan IAM Identity Center).

Impor kumpulan data Titanic

Mulai lingkungan Studio Anda dan buat yang baru Aliran data Wrangler. Anda dapat mengimpor kumpulan data Anda sendiri atau menggunakan contoh kumpulan data (Titanic) seperti yang ditunjukkan pada tangkapan layar berikut. Data Wrangler memungkinkan Anda untuk mengimpor kumpulan data dari sumber data yang berbeda. Untuk kasus penggunaan kami, kami mengimpor kumpulan data sampel dari bucket S3.

Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Setelah diimpor, Anda akan melihat dua node (node ​​sumber dan node tipe data) di aliran data. Data Wrangler secara otomatis mengidentifikasi tipe data untuk semua kolom dalam kumpulan data.

Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Transformasi kustom dengan NLTK

Untuk persiapan data dan rekayasa fitur dengan Data Wrangler, Anda dapat menggunakan lebih dari 300 transformasi bawaan atau membuat transformasi kustom Anda sendiri. Transformasi kustom dapat ditulis sebagai langkah terpisah dalam Data Wrangler. Mereka menjadi bagian dari file .flow di dalam Data Wrangler. Fitur transformasi kustom mendukung Python, PySpark, dan SQL sebagai langkah berbeda dalam cuplikan kode. Setelah file buku catatan (.ipynb) dibuat dari file .flow atau file .flow digunakan sebagai resep, potongan kode transformasi kustom tetap ada tanpa memerlukan perubahan apa pun. Desain Data Wrangler ini memungkinkan transformasi kustom menjadi bagian dari tugas Pemrosesan SageMaker untuk memproses kumpulan data besar dengan transformasi kustom.

Dataset Titanic memiliki beberapa fitur (nama dan home.dest) yang berisi informasi teks. Kita gunakan NLTK untuk membagi kolom nama dan mengekstrak nama belakang, dan mencetak frekuensi nama belakang. NLTK adalah platform terkemuka untuk membangun program Python agar bekerja dengan data bahasa manusia. Ini menyediakan antarmuka yang mudah digunakan untuk lebih dari 50 kumpulan dan sumber daya leksikal seperti WordNet, bersama dengan rangkaian pustaka pemrosesan teks untuk klasifikasi, tokenisasi, stemming, penandaan, parsing, dan penalaran semantik, dan pembungkus untuk pustaka pemrosesan bahasa alami (NLP) berkekuatan industri.

Untuk menambahkan transformasi baru, selesaikan langkah-langkah berikut:

  1. Pilih tanda plus dan pilih Tambahkan Transform.
  2. Pilih Tambahkan Langkah Dan pilihlah Transformasi Kustom.

Anda dapat membuat transformasi khusus menggunakan Pandas, PySpark, fungsi yang ditentukan pengguna Python, dan SQL PySpark.

Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

  1. Pilih Python (Panda) dan tambahkan kode berikut untuk mengekstrak nama belakang dari kolom nama:
    import nltk
    nltk.download('punkt')
    tokens = [nltk.word_tokenize(name) for name in df['Name']] # Extract the last names of the passengers
    df['last_name'] = [token[0] for token in tokens]

  2. Pilih Preview untuk meninjau hasil.

Tangkapan layar berikut menunjukkan last_name kolom diekstrak.

Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

  1. Tambahkan langkah transformasi kustom lainnya untuk mengidentifikasi distribusi frekuensi nama belakang, menggunakan kode berikut:
    import nltk
    fd = nltk.FreqDist(df["last_name"])
    print(fd.most_common(10))

  2. Pilih Preview untuk meninjau hasil frekuensi.Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Transformasi kustom dengan layanan AWS AI

Layanan AI terlatih AWS memberikan kecerdasan siap pakai untuk aplikasi dan alur kerja Anda. Layanan AI AWS mudah diintegrasikan dengan aplikasi Anda untuk menangani banyak kasus penggunaan umum. Anda sekarang dapat menggunakan kemampuan untuk layanan AI AWS sebagai langkah transformasi kustom di Data Wrangler.

Amazon Comprehend menggunakan NLP untuk mengekstrak wawasan tentang konten dokumen. Ini mengembangkan wawasan dengan mengenali entitas, frase kunci, bahasa, sentimen, dan elemen umum lainnya dalam sebuah dokumen.

Kami menggunakan Amazon Comprehend untuk mengekstrak entitas dari kolom nama. Selesaikan langkah-langkah berikut:

  1. Tambahkan langkah transformasi khusus.
  2. Pilih Python (Panda).
  3. Masukkan kode berikut untuk mengekstrak entitas:
    import boto3
    comprehend = boto3.client("comprehend") response = comprehend.detect_entities(LanguageCode = 'en', Text = df['name'].iloc[0]) for entity in response['Entities']:
    print(entity['Type'] + ":" + entity["Text"])

  4. Pilih Preview dan memvisualisasikan hasilnya.

Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Kami sekarang telah menambahkan tiga transformasi khusus di Data Wrangler.

  1. Pilih Aliran data untuk memvisualisasikan aliran data end-to-end.

Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Transformasi khusus dengan NumPy dan SciPy

JumlahPy adalah pustaka sumber terbuka untuk Python yang menawarkan fungsi matematika komprehensif, generator bilangan acak, rutinitas aljabar linier, transformasi Fourier, dan banyak lagi. SciPy adalah pustaka Python sumber terbuka yang digunakan untuk komputasi ilmiah dan komputasi teknis, berisi modul untuk pengoptimalan, aljabar linier, integrasi, interpolasi, fungsi khusus, transformasi Fourier cepat (FFT), pemrosesan sinyal dan gambar, pemecah, dan banyak lagi.

Transformasi khusus Data Wrangler memungkinkan Anda menggabungkan Python, PySpark, dan SQL sebagai langkah yang berbeda. Dalam alur Data Wrangler berikut, fungsi yang berbeda dari paket Python, NumPy, dan SciPy diterapkan pada kumpulan data Titanic sebagai beberapa langkah.

Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

transformasi NumPy

Kolom tarif set data Titanic memiliki tarif naik penumpang yang berbeda. Histogram kolom tarif menunjukkan distribusi yang seragam, kecuali bin terakhir. Dengan menerapkan transformasi NumPy seperti log atau akar kuadrat, kita dapat mengubah distribusi (seperti yang ditunjukkan oleh transformasi akar kuadrat).

Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai. Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Lihat kode berikut:

import pandas as pd
import numpy as np
df["fare_log"] = np.log(df["fare_interpolate"])
df["fare_sqrt"] = np.sqrt(df["fare_interpolate"])
df["fare_cbrt"] = np.cbrt(df["fare_interpolate"])

transformasi SciPy

Fungsi SciPy seperti z-score diterapkan sebagai bagian dari transformasi kustom untuk membakukan distribusi tarif dengan rata-rata dan deviasi standar.

Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Lihat kode berikut:

df["fare_zscore"] = zscore(df["fare_interpolate"])
from scipy.stats import zscore

Optimalisasi kendala dengan NumPy dan SciPy

Transformasi khusus Data Wrangler dapat menangani transformasi tingkat lanjut seperti pengoptimalan kendala yang menerapkan fungsi optimal SciPy dan menggabungkan SciPy dengan NumPy. Dalam contoh berikut, tarif sebagai fungsi usia tidak menunjukkan tren yang dapat diamati. Namun, optimalisasi kendala dapat mengubah tarif sebagai fungsi usia. Kondisi kendala dalam hal ini adalah total tarif yang baru tetap sama dengan total tarif yang lama. Transformasi khusus Data Wrangler memungkinkan Anda menjalankan fungsi pengoptimalan SciPy untuk menentukan koefisien optimal yang dapat mengubah tarif sebagai fungsi usia dalam kondisi kendala.

Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai. Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Definisi pengoptimalan, definisi tujuan, dan beberapa kendala dapat disebutkan sebagai fungsi yang berbeda saat merumuskan pengoptimalan kendala dalam transformasi kustom Data Wrangler menggunakan SciPy dan NumPy. Transformasi khusus juga dapat menghadirkan metode pemecah berbeda yang tersedia sebagai bagian dari paket pengoptimalan SciPy. Variabel transformasi baru dapat dihasilkan dengan mengalikan koefisien optimal dengan kolom asli dan ditambahkan ke kolom Data Wrangler yang ada. Lihat kode berikut:

import numpy as np
import scipy.optimize as opt
import pandas as pd df2 = pd.DataFrame({"Y":df["fare_interpolate"], "X1":df["age_interpolate"]}) # optimization defination
def main(df2):
x0 = [0.1]
res = opt.minimize(fun=obj, x0=x0, args=(df2), method="SLSQP", bounds=[(0,50)], constraints=cons)
return res # objective function
def obj(x0, df2):
sumSquares = np.sum(df2["Y"] - x0*df2["X1"])
return sumSquares # constraints
def constraint1(x0):
sum_cons1 = np.sum(df2["Y"] - x0*df2["X1"]) - 0
return sum_cons1
con1 = {'type': 'eq', 'fun': constraint1}
cons = ([con1]) print(main(df2)) df["new_fare_age_optimized"]=main(df2).x*df2["X1"]

Fitur transformasi kustom Data Wrangler memiliki kemampuan UI untuk menunjukkan hasil fungsi optimal SciPy seperti nilai koefisien optimal (atau beberapa koefisien).

Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Transformasi khusus dengan scikit-learn

scikit-belajar adalah modul Python untuk pembelajaran mesin yang dibangun di atas SciPy. Ini adalah pustaka ML sumber terbuka yang mendukung pembelajaran yang diawasi dan tidak diawasi. Ini juga menyediakan berbagai alat untuk pemasangan model, pemrosesan awal data, pemilihan model, evaluasi model, dan banyak utilitas lainnya.

Diskritisasi

Diskritisasi (atau dikenal sebagai kuantisasi or membuang) menyediakan cara untuk mempartisi fitur berkelanjutan menjadi nilai diskrit. Dataset tertentu dengan fitur kontinu mungkin mendapat manfaat dari diskritisasi, karena diskritisasi dapat mengubah dataset atribut kontinu menjadi satu dengan hanya atribut nominal. Fitur diskrit yang dikodekan satu-panas dapat membuat model lebih ekspresif, sambil mempertahankan interpretabilitas. Misalnya, preprocessing dengan diskritizer dapat memperkenalkan nonlinier ke model linier.

Dalam kode berikut, kami menggunakan KBinsDiscretizer untuk mendiskritisasi kolom umur menjadi 10 bin:

# Table is available as variable `df`
from sklearn.preprocessing import KBinsDiscretizer
import numpy as np
# discretization transform the raw data
df = df.dropna()
kbins = KBinsDiscretizer(n_bins=10, encode='ordinal', strategy='uniform')
ages = np.array(df["age"]).reshape(-1, 1)
df["age"] = kbins.fit_transform(ages)
print(kbins.bin_edges_)

Anda dapat melihat tepi nampan yang dicetak pada tangkapan layar berikut.

Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Pengkodean satu-panas

Nilai di kolom Memulai adalah nilai kategorikal. Oleh karena itu, kita harus merepresentasikan string ini sebagai nilai numerik untuk melakukan klasifikasi dengan model kita. Kami juga dapat melakukan ini menggunakan transformasi penyandian satu-panas.

Ada tiga nilai untuk Memulai: S, C, dan Q. Kami mewakili ini dengan angka. Lihat kode berikut:

# Table is available as variable `df`
from sklearn.preprocessing import LabelEncoder le_embarked = LabelEncoder()
le_embarked.fit(df["embarked"]) encoded_embarked_training = le_embarked.transform(df["embarked"])
df["embarked"] = encoded_embarked_training

Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Membersihkan

Saat Anda tidak menggunakan Data Wrangler, penting untuk mematikan instans yang dijalankannya untuk menghindari biaya tambahan.

Data Wrangler secara otomatis menyimpan aliran data Anda setiap 60 detik. Untuk menghindari kehilangan pekerjaan, simpan aliran data Anda sebelum mematikan Data Wrangler.

  1. Untuk menyimpan aliran data Anda di Studio, pilih File, Lalu pilih Simpan Aliran Data Wrangler.
  2. Untuk mematikan instance Data Wrangler, di Studio, pilih Menjalankan Instance dan Kernel.
  3. Bawah APLIKASI YANG SEDANG BERJALAN, pilih ikon matikan di sebelah aplikasi sagemaker-data-wrangler-1.0.
  4. Pilih Matikan semua untuk mengkonfirmasi.

Data Wrangler berjalan pada instance ml.m5.4xlarge. Contoh ini menghilang dari INSTALASI YANG BERJALAN saat Anda mematikan aplikasi Data Wrangler.

Setelah Anda mematikan aplikasi Data Wrangler, itu harus dimulai ulang saat berikutnya Anda membuka file aliran Data Wrangler. Ini bisa memakan waktu beberapa menit.

Kesimpulan

Dalam posting ini, kami mendemonstrasikan bagaimana Anda dapat menggunakan transformasi khusus di Data Wrangler. Kami menggunakan pustaka dan kerangka kerja dalam wadah Data Wrangler untuk memperluas kemampuan transformasi data bawaan. Contoh dalam posting ini mewakili subset dari kerangka kerja yang digunakan. Transformasi dalam alur Data Wrangler kini dapat ditingkatkan ke saluran pipa untuk DataOps.

Untuk mempelajari lebih lanjut tentang menggunakan aliran data dengan Data Wrangler, lihat Buat dan Gunakan Aliran Data Wrangler dan Harga Amazon SageMaker. Untuk memulai dengan Data Wrangler, lihat Siapkan Data ML dengan Amazon SageMaker Data Wrangler. Untuk mempelajari lebih lanjut tentang Autopilot dan AutoML di SageMaker, kunjungi Otomatiskan pengembangan model dengan Amazon SageMaker Autopilot.


Tentang penulis

Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Meenakshisundaram Thandavarayan adalah spesialis AI/ML Senior dengan AWS. Dia membantu akun strategis berteknologi tinggi dalam perjalanan AI dan ML mereka. Dia sangat bersemangat tentang AI berbasis data.

 Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Sovik Kumar Nat adalah arsitek solusi AI/ML dengan AWS. Dia memiliki pengalaman luas dalam desain dan solusi end-to-end untuk pembelajaran mesin; analitik bisnis dalam analitik keuangan, operasional, dan pemasaran; kesehatan; rantai pasokan; dan IoT. Di luar pekerjaan, Sovik senang bepergian dan menonton film.

Membuat transformasi khusus di Amazon SageMaker Data Wrangler menggunakan NLTK dan SciPy PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Abigail adalah Insinyur Pengembangan Perangkat Lunak di Amazon SageMaker. Dia bersemangat membantu pelanggan menyiapkan data mereka di DataWrangler dan membangun sistem pembelajaran mesin terdistribusi. Di waktu luangnya, Abigail senang bepergian, mendaki gunung, bermain ski, dan membuat kue.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS