Crearea de transformări personalizate în Amazon SageMaker Data Wrangler folosind NLTK și SciPy

Crearea de transformări personalizate în Amazon SageMaker Data Wrangler folosind NLTK și SciPy

„În loc să se concentreze pe cod, companiile ar trebui să se concentreze pe dezvoltarea unor practici sistematice de inginerie pentru îmbunătățirea datelor în moduri care sunt fiabile, eficiente și sistematice. Cu alte cuvinte, companiile trebuie să treacă de la o abordare centrată pe model la o abordare centrată pe date.” – Andrew Ng

O abordare AI centrată pe date implică construirea de sisteme AI cu date de calitate care implică pregătirea datelor și ingineria caracteristicilor. Aceasta poate fi o sarcină obositoare care implică colectarea datelor, descoperirea, crearea de profiluri, curățarea, structurarea, transformarea, îmbogățirea, validarea și stocarea în siguranță a datelor.

Amazon SageMaker Data Wrangler este un serviciu în Amazon SageMaker Studio care oferă o soluție end-to-end pentru importarea, pregătirea, transformarea, prezentarea și analiza datelor folosind puțină sau deloc codificare. Puteți integra un flux de pregătire a datelor Data Wrangler în fluxurile de lucru de învățare automată (ML) pentru a simplifica preprocesarea datelor și ingineria caracteristicilor, ducând pregătirea datelor în producție mai rapid, fără a fi nevoie să creați codul PySpark, să instalați Apache Spark sau să creați clustere.

Pentru scenariile în care trebuie să adăugați propriile scripturi personalizate pentru transformările de date, puteți scrie logica de transformare în Pandas, PySpark, PySpark SQL. Data Wrangler acceptă acum bibliotecile NLTK și SciPy pentru crearea de transformări personalizate pentru a pregăti date text pentru ML și pentru a realiza optimizarea constrângerilor.

S-ar putea să întâlniți scenarii în care trebuie să adăugați propriile scripturi personalizate pentru transformarea datelor. Cu capacitatea de transformare personalizată Data Wrangler, vă puteți scrie logica de transformare în Pandas, PySpark, PySpark SQL.

În această postare, discutăm cum vă puteți scrie transformarea personalizată în NLTK pentru a pregăti date text pentru ML. De asemenea, vom împărtăși câteva exemple de transformare a codului personalizat folosind alte cadre comune, cum ar fi NLTK, NumPy, SciPy și scikit-learn, precum și AWS AI Services. În scopul acestui exercițiu, folosim Setul de date Titanic, un set de date popular în comunitatea ML, care a fost acum adăugat ca a set de date eșantion în cadrul Data Wrangler.

Prezentare generală a soluțiilor

Data Wrangler oferă peste 40 de conectori încorporați pentru importarea datelor. După ce datele sunt importate, vă puteți construi analiza și transformările datelor folosind peste 300 de transformări încorporate. Puteți genera apoi conducte industrializate pentru a împinge caracteristicile Serviciul Amazon de stocare simplă (Amazon S3) sau Magazinul de caracteristici Amazon SageMaker. Următoarea diagramă arată arhitectura de nivel înalt de la capăt la capăt.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Cerințe preliminare

Data Wrangler este o caracteristică SageMaker disponibilă în interior Amazon SageMaker Studio. Puteți urmări procesul de înscriere la Studio pentru a dezvolta mediul Studio și notebook-uri. Deși puteți alege dintre câteva metode de autentificare, cel mai simplu mod de a crea un domeniu Studio este să urmați Instrucțiuni de pornire rapidă. Pornirea rapidă utilizează aceleași setări implicite ca și configurația standard Studio. De asemenea, puteți alege să vă îmbarcați folosind Centrul de identitate AWS IAM (succesorul AWS Single Sign-On) pentru autentificare (consultați Accesați domeniul Amazon SageMaker folosind IAM Identity Center).

Importați setul de date Titanic

Porniți mediul Studio și creați unul nou Fluxul de date Wrangler. Puteți fie să importați propriul set de date, fie să utilizați un exemplu de set de date (Titanic), așa cum se arată în următoarea captură de ecran. Data Wrangler vă permite să importați seturi de date din diferite surse de date. Pentru cazul nostru de utilizare, importăm setul de date eșantion dintr-o găleată S3.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Odată importat, veți vedea două noduri (nodul sursă și nodul tip de date) în fluxul de date. Data Wrangler identifică automat tipul de date pentru toate coloanele din setul de date.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Transformări personalizate cu NLTK

Pentru pregătirea datelor și ingineria caracteristicilor cu Data Wrangler, puteți utiliza peste 300 de transformări încorporate sau puteți construi propriile transformări personalizate. Transformări personalizate poate fi scris ca pași separati în Data Wrangler. Acestea devin parte din fișierul .flow din Data Wrangler. Funcția de transformare personalizată acceptă Python, PySpark și SQL ca pași diferiți în fragmente de cod. După ce fișierele notebook (.ipynb) sunt generate din fișierul .flow sau fișierul .flow este utilizat ca rețete, fragmentele de cod de transformare personalizate persistă fără a necesita modificări. Acest design al Data Wrangler permite transformărilor personalizate să devină parte dintr-o lucrare de procesare SageMaker pentru procesarea seturi de date masive cu transformări personalizate.

Setul de date Titanic are câteva caracteristici (nume și home.dest) care conțin informații text. Folosim NLTK pentru a împărți coloana de nume și a extrage numele de familie și a tipări frecvența numelor de familie. NLTK este o platformă de top pentru construirea de programe Python pentru a lucra cu date din limbajul uman. Oferă interfețe ușor de utilizat pentru peste 50 de corpus și resurse lexicale cum ar fi WordNet, împreună cu o suită de biblioteci de procesare a textului pentru clasificare, tokenizare, stemming, etichetare, parsare și raționament semantic, și wrapper-uri pentru biblioteci de procesare a limbajului natural (NLP) cu putere industrială.

Pentru a adăuga o nouă transformare, parcurgeți următorii pași:

  1. Alegeți semnul plus și alegeți Adăugați Transform.
  2. Alege Adăugați Pasul Și alegeți Transformare personalizată.

Puteți crea o transformare personalizată folosind Pandas, PySpark, funcții Python definite de utilizator și SQL PySpark.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

  1. Alege Python (Panda) și adăugați următorul cod pentru a extrage numele de familie din coloana nume:
    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. Alege Anunţ pentru a revizui rezultatele.

Următoarea captură de ecran arată ecranul last_name coloană extrasă.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

  1. Adăugați un alt pas de transformare personalizat pentru a identifica distribuția de frecvență a numelor de familie, folosind următorul cod:
    import nltk
    fd = nltk.FreqDist(df["last_name"])
    print(fd.most_common(10))

  2. Alege Anunţ pentru a revizui rezultatele frecvenței.Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Transformări personalizate cu servicii AWS AI

Serviciile AI pregătite de AWS oferă informații gata făcute pentru aplicațiile și fluxurile dvs. de lucru. Serviciile AWS AI se integrează cu ușurință cu aplicațiile dvs. pentru a aborda multe cazuri de utilizare obișnuite. Acum puteți utiliza capabilitățile pentru serviciile AWS AI ca pas de transformare personalizată în Data Wrangler.

Amazon Comprehend folosește NLP pentru a extrage informații despre conținutul documentelor. Ea dezvoltă perspective prin recunoașterea entităților, expresiilor cheie, limbajului, sentimentelor și a altor elemente comune dintr-un document.

Folosim Amazon Comprehend pentru a extrage entitățile din coloana de nume. Parcurgeți următorii pași:

  1. Adăugați un pas de transformare personalizat.
  2. Alege Python (Panda).
  3. Introduceți următorul cod pentru a extrage entitățile:
    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. Alege Anunţ și vizualizați rezultatele.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Acum am adăugat trei transformări personalizate în Data Wrangler.

  1. Alege Flux de date pentru a vizualiza fluxul de date de la capăt la capăt.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Transformări personalizate cu NumPy și SciPy

NumPy este o bibliotecă open-source pentru Python care oferă funcții matematice cuprinzătoare, generatoare de numere aleatorii, rutine de algebră liniară, transformări Fourier și multe altele. SciPy este o bibliotecă Python cu sursă deschisă folosită pentru calcul științific și pentru calcul tehnic, care conține module pentru optimizare, algebră liniară, integrare, interpolare, funcții speciale, transformată Fourier rapidă (FFT), procesare a semnalului și a imaginii, rezolutori și multe altele.

Transformările personalizate ale Data Wrangler vă permit să combinați Python, PySpark și SQL ca pași diferiți. În următorul flux de date Wrangler, diferite funcții din pachetele Python, NumPy și SciPy sunt aplicate pe setul de date Titanic în mai mulți pași.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Transformări NumPy

Coloana de tarife a setului de date Titanic conține tarife de îmbarcare ale diferiților pasageri. Histograma coloanei de tarif arată o distribuție uniformă, cu excepția ultimului bin. Aplicând transformări NumPy, cum ar fi log sau rădăcină pătrată, putem schimba distribuția (după cum arată transformarea rădăcinii pătrate).

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai. Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Consultați următorul cod:

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

Transformări SciPy

Funcțiile SciPy precum z-score sunt aplicate ca parte a transformării personalizate pentru a standardiza distribuția tarifelor cu medie și abatere standard.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Consultați următorul cod:

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

Optimizarea constrângerilor cu NumPy și SciPy

Transformările personalizate ale Data Wrangler pot gestiona transformări avansate, cum ar fi optimizarea constrângerilor, aplicarea funcțiilor de optimizare SciPy și combinarea SciPy cu NumPy. În exemplul următor, tariful în funcție de vârstă nu arată nicio tendință observabilă. Cu toate acestea, optimizarea constrângerilor poate transforma tariful în funcție de vârstă. Condiția de constrângere în acest caz este ca noul tarif total să rămână același cu vechiul tarif total. Transformările personalizate ale Data Wrangler vă permit să rulați funcția de optimizare SciPy pentru a determina coeficientul optim care poate transforma tariful în funcție de vârstă în condiții de constrângere.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai. Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Definiția optimizării, definiția obiectivului și constrângerile multiple pot fi menționate ca funcții diferite în timp ce se formulează optimizarea constrângerilor într-o transformare personalizată Data Wrangler folosind SciPy și NumPy. Transformările personalizate pot aduce, de asemenea, diferite metode de rezolvare care sunt disponibile ca parte a pachetului de optimizare SciPy. O nouă variabilă transformată poate fi generată prin înmulțirea coeficientului optim cu coloana originală și adăugată la coloanele existente ale Data Wrangler. Vezi următorul cod:

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"]

Caracteristica de transformare personalizată Data Wrangler are capacitatea de a afișa rezultatele funcțiilor de optimizare SciPy, cum ar fi valoarea coeficientului optim (sau coeficienții multipli).

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Transformări personalizate cu scikit-learn

scikit-learn este un modul Python pentru învățarea automată, construit pe baza SciPy. Este o bibliotecă ML open-source care acceptă învățarea supravegheată și nesupravegheată. De asemenea, oferă diverse instrumente pentru adaptarea modelului, preprocesarea datelor, selecția modelului, evaluarea modelului și multe alte utilități.

Discretizarea

Discretizarea (altfel cunoscut ca cuantizare or binning) oferă o modalitate de a împărți caracteristicile continue în valori discrete. Anumite seturi de date cu caracteristici continue pot beneficia de discretizare, deoarece discretizarea poate transforma setul de date de atribute continue într-unul cu doar atribute nominale. Caracteristicile discretizate one-hot codificate pot face un model mai expresiv, menținând în același timp interpretabilitatea. De exemplu, preprocesarea cu un discretizator poate introduce neliniaritatea modelelor liniare.

În următorul cod, folosim KBinsDiscretizer pentru a discretiza coloana de vârstă în 10 casete:

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

Puteți vedea marginile coșului tipărite în următoarea captură de ecran.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Codificare one-hot

Valorile din coloanele Imbarcate sunt valori categorice. Prin urmare, trebuie să reprezentăm aceste șiruri ca valori numerice pentru a realiza clasificarea noastră cu modelul nostru. De asemenea, am putea face acest lucru folosind o transformare de codificare one-hot.

Există trei valori pentru Embarked: S, C și Q. Acestea le reprezentăm cu numere. Vezi următorul cod:

# 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

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

A curăța

Când nu utilizați Data Wrangler, este important să închideți instanța pe care rulează pentru a evita costurile suplimentare.

Data Wrangler salvează automat fluxul de date la fiecare 60 de secunde. Pentru a evita pierderea muncii, salvați fluxul de date înainte de a închide Data Wrangler.

  1. Pentru a salva fluxul de date în Studio, alegeți Fișier, Apoi alegeți Salvați fluxul de date Wrangler.
  2. Pentru a închide instanța Data Wrangler, în Studio, alegeți Rularea instanțelor și a nucleelor.
  3. În RULEAȚI APLICAȚII, alegeți pictograma de închidere de lângă aplicația sagemaker-data-wrangler-1.0.
  4. Alege Închideți totul a confirma.

Data Wrangler rulează pe o instanță ml.m5.4xlarge. Această instanță dispare din INSTANȚE DE RELARE când închideți aplicația Data Wrangler.

După ce închideți aplicația Data Wrangler, aceasta trebuie să repornească data viitoare când deschideți un fișier de flux Data Wrangler. Acest lucru poate dura câteva minute.

Concluzie

În această postare, am demonstrat cum puteți utiliza transformări personalizate în Data Wrangler. Am folosit bibliotecile și cadrul din containerul Data Wrangler pentru a extinde capacitățile de transformare a datelor încorporate. Exemplele din această postare reprezintă un subset al cadrelor utilizate. Transformările din fluxul Data Wrangler pot fi acum scalate la o conductă pentru DataOps.

Pentru a afla mai multe despre utilizarea fluxurilor de date cu Data Wrangler, consultați Creați și utilizați un flux de date Wrangler și Prețuri Amazon SageMaker. Pentru a începe cu Data Wrangler, consultați Pregătiți datele ML cu Amazon SageMaker Data Wrangler. Pentru a afla mai multe despre Autopilot și AutoML pe SageMaker, vizitați Automatizați dezvoltarea modelului cu Amazon SageMaker Autopilot.


Despre autori

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.Meenakshisundaram Thandavarayan este un specialist senior AI/ML cu AWS. El ajută conturile strategice de înaltă tehnologie în călătoria lor AI și ML. Este foarte pasionat de IA bazată pe date.

 Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.Sovik Kumar Nath este un arhitect de soluții AI/ML cu AWS. Are o vastă experiență în proiecte și soluții end-to-end pentru învățarea automată; analiză de afaceri în cadrul analizei financiare, operaționale și de marketing; sănătate; lanț de aprovizionare; și IoT. În afara serviciului, lui Sovik îi place să călătorească și să se uite la filme.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.Subretă este inginer de dezvoltare software la Amazon SageMaker. Este pasionată de a ajuta clienții să își pregătească datele în DataWrangler și să construiască sisteme de învățare automată distribuite. În timpul ei liber, lui Abigail îi place să călătorească, să facă drumeții, să schieze și să gătească.

Timestamp-ul:

Mai mult de la Învățare automată AWS