Avtorsko ustvarjanje transformacij po meri v Amazon SageMaker Data Wrangler z uporabo NLTK in SciPy

Avtorsko ustvarjanje transformacij po meri v Amazon SageMaker Data Wrangler z uporabo NLTK in SciPy

»Namesto da se osredotočajo na kodo, bi se morala podjetja osredotočiti na razvoj sistematičnih inženirskih praks za izboljšanje podatkov na načine, ki so zanesljivi, učinkoviti in sistematični. Z drugimi besedami, podjetja se morajo premakniti s pristopa, osredotočenega na model, na pristop, osredotočen na podatke.« – Andrew Ng

Pristop umetne inteligence, osredotočen na podatke, vključuje gradnjo sistemov umetne inteligence s kakovostnimi podatki, ki vključujejo pripravo podatkov in inženiring funkcij. To je lahko dolgočasno opravilo, ki vključuje zbiranje podatkov, odkrivanje, profiliranje, čiščenje, strukturiranje, preoblikovanje, obogatitev, potrjevanje in varno shranjevanje podatkov.

Amazon SageMaker Data Wrangler je storitev v Amazon SageMaker Studio ki zagotavlja celovito rešitev za uvoz, pripravo, preoblikovanje, predstavljanje in analizo podatkov z uporabo malo ali nič kodiranja. Tok priprave podatkov Data Wrangler lahko integrirate v delovne poteke strojnega učenja (ML), da poenostavite predprocesiranje podatkov in inženiring funkcij ter hitreje prenesete pripravo podatkov v produkcijo, ne da bi morali avtorizirati kodo PySpark, namestiti Apache Spark ali vrteti gruče.

Za scenarije, kjer morate dodati lastne skripte po meri za transformacije podatkov, lahko svojo logiko transformacije napišete v Pandas, PySpark, PySpark SQL. Data Wrangler zdaj podpira knjižnici NLTK in SciPy za avtorstvo transformacij po meri za pripravo besedilnih podatkov za ML in izvajanje optimizacije omejitev.

Morda boste naleteli na scenarije, kjer boste morali dodati lastne skripte po meri za pretvorbo podatkov. Z zmožnostjo transformacije po meri Data Wrangler lahko svojo logiko transformacije napišete v Pandas, PySpark, PySpark SQL.

V tej objavi razpravljamo o tem, kako lahko napišete svojo transformacijo po meri v NLTK za pripravo besedilnih podatkov za ML. Delili bomo tudi nekaj primerov preoblikovanja kode po meri z uporabo drugih običajnih ogrodij, kot so NLTK, NumPy, SciPy in scikit-learn ter storitve AWS AI. Za namen te vaje uporabljamo Nabor podatkov o Titaniku, priljubljen nabor podatkov v skupnosti ML, ki je zdaj dodan kot a vzorec nabora podatkov znotraj Data Wranglerja.

Pregled rešitev

Data Wrangler ponuja več kot 40 vgrajenih priključkov za uvoz podatkov. Ko so podatki uvoženi, lahko ustvarite analizo podatkov in transformacije z uporabo več kot 300 vgrajenih transformacij. Nato lahko ustvarite industrializirane cevovode, v katere potisnete funkcije Preprosta storitev shranjevanja Amazon (Amazon S3) ali Trgovina s funkcijami Amazon SageMaker. Naslednji diagram prikazuje visokonivojsko arhitekturo od konca do konca.

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

Predpogoji

Data Wrangler je funkcija SageMaker, ki je na voljo znotraj Amazon SageMaker Studio. Lahko sledite postopek vkrcanja v Studio da zavrtite okolje Studio in prenosnike. Čeprav lahko izbirate med nekaj načini preverjanja pristnosti, je najenostavnejši način za ustvarjanje domene Studio tako, da sledite Navodila za hiter začetek. Hitri začetek uporablja iste privzete nastavitve kot standardna nastavitev Studio. Izberete lahko tudi vkrcanje z uporabo AWS IAM Identity Center (naslednik AWS Single Sign-On) za avtentikacijo (glejte Vključite se v domeno Amazon SageMaker z uporabo centra za identiteto IAM).

Uvozite nabor podatkov o Titaniku

Zaženite svoje okolje Studio in ustvarite novo Data Wrangler tok. Lahko uvozite svoj nabor podatkov ali uporabite vzorčni nabor podatkov (Titanik), kot je prikazano na naslednjem posnetku zaslona. Data Wrangler vam omogoča uvoz naborov podatkov iz različnih virov podatkov. Za naš primer uporabe uvozimo vzorčni nabor podatkov iz vedra S3.

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

Po uvozu boste v toku podatkov videli dve vozlišči (izvorno vozlišče in vozlišče podatkovnega tipa). Data Wrangler samodejno prepozna vrsto podatkov za vse stolpce v naboru podatkov.

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

Transformacije po meri z NLTK

Za pripravo podatkov in inženiring funkcij s programom Data Wrangler lahko uporabite več kot 300 vgrajenih transformacij ali ustvarite lastne transformacije po meri. Transformacije po meri lahko zapišete kot ločene korake znotraj programa Data Wrangler. Postanejo del datoteke .flow znotraj Data Wranglerja. Funkcija preoblikovanja po meri podpira Python, PySpark in SQL kot različne korake v delčkih kode. Potem ko so datoteke zvezka (.ipynb) ustvarjene iz datoteke .flow ali je datoteka .flow uporabljena kot recepti, se odrezki kode za preoblikovanje po meri ohranijo, ne da bi jih bilo treba spremeniti. Ta zasnova Data Wrangler omogoča transformacijam po meri, da postanejo del opravila SageMaker Processing za obdelavo ogromnih nizov podatkov s transformacijami po meri.

Nabor podatkov Titanic ima nekaj funkcij (ime in home.dest), ki vsebujejo besedilne informacije. Uporabljamo NLTK da razdelite stolpec z imeni in izvlečete priimek ter natisnete pogostost priimkov. NLTK je vodilna platforma za izdelavo programov Python za delo s podatki človeškega jezika. Ponuja vmesnike, ki so enostavni za uporabo preko 50 korpusov in leksikalnih virov kot je WordNet, skupaj z naborom knjižnic za obdelavo besedila za klasifikacijo, tokenizacijo, izvor, označevanje, razčlenjevanje in semantično razmišljanje ter ovoji za knjižnice industrijske obdelave naravnega jezika (NLP).

Če želite dodati novo transformacijo, izvedite naslednje korake:

  1. Izberite znak plus in izberite Dodaj preoblikovanje.
  2. Izberite Dodaj korak In izberite Preoblikovanje po meri.

Pretvorbo po meri lahko ustvarite z uporabo Pandas, PySpark, uporabniško definiranih funkcij Python in SQL PySpark.

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

  1. Izberite Python (pande) in dodajte naslednjo kodo, da iz stolpca z imenom izvlečete priimek:
    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. Izberite predogled za pregled rezultatov.

Naslednji posnetek zaslona prikazuje last_name stolpec ekstrahiran.

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

  1. Dodajte še en korak transformacije po meri, da identificirate porazdelitev frekvence priimkov, z uporabo naslednje kode:
    import nltk
    fd = nltk.FreqDist(df["last_name"])
    print(fd.most_common(10))

  2. Izberite predogled za pregled rezultatov frekvence.Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Transformacije po meri s storitvami AI AWS

Vnaprej usposobljene storitve umetne inteligence AWS zagotavljajo že pripravljeno inteligenco za vaše aplikacije in poteke dela. Storitve umetne inteligence AWS se enostavno integrirajo z vašimi aplikacijami za obravnavo številnih pogostih primerov uporabe. Zdaj lahko uporabite zmogljivosti za storitve AI AWS kot korak transformacije po meri v Data Wranglerju.

Amazonsko razumevanje uporablja NLP za pridobivanje vpogledov v vsebino dokumentov. Razvija vpoglede s prepoznavanjem entitet, ključnih fraz, jezika, čustev in drugih pogostih elementov v dokumentu.

Za ekstrahiranje entitet iz stolpca z imeni uporabljamo Amazon Comprehend. Izvedite naslednje korake:

  1. Dodajte korak transformacije po meri.
  2. Izberite Python (pande).
  3. Vnesite naslednjo kodo, da izvlečete entitete:
    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. Izberite predogled in vizualizirajte rezultate.

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

Zdaj smo v Data Wrangler dodali tri transformacije po meri.

  1. Izberite Pretok podatkov za vizualizacijo toka podatkov od konca do konca.

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

Transformacije po meri z NumPy in SciPy

numpy je odprtokodna knjižnica za Python, ki ponuja obsežne matematične funkcije, generatorje naključnih števil, rutine linearne algebre, Fourierjeve transformacije in drugo. SciPy je odprtokodna knjižnica Python, ki se uporablja za znanstveno in tehnično računalništvo ter vsebuje module za optimizacijo, linearno algebro, integracijo, interpolacijo, posebne funkcije, hitro Fourierjevo transformacijo (FFT), obdelavo signalov in slik, reševalce in drugo.

Transformacije po meri Data Wrangler vam omogočajo kombiniranje Pythona, PySparka in SQL kot različnih korakov. V naslednjem toku Data Wrangler se različne funkcije iz paketov Python, NumPy in SciPy uporabijo za nabor podatkov Titanic kot več korakov.

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

Transformacije NumPy

Stolpec s cenami vozovnic v naboru podatkov o Titaniku vsebuje cene vkrcanja različnih potnikov. Histogram stolpca s cenami prikazuje enakomerno porazdelitev, razen zadnjega polja. Z uporabo transformacij NumPy, kot sta log ali kvadratni koren, lahko spremenimo porazdelitev (kot je prikazano s transformacijo kvadratnega korena).

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.

Glej naslednjo kodo:

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

SciPy transformacije

Funkcije SciPy, kot je z-score, se uporabljajo kot del pretvorbe po meri za standardizacijo porazdelitve vozovnic s povprečjem in standardnim odklonom.

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

Glej naslednjo kodo:

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

Optimizacija omejitev z NumPy in SciPy

Transformacije po meri Data Wrangler lahko obravnavajo napredne transformacije, kot je optimizacija omejitev z uporabo funkcij optimizacije SciPy in kombiniranjem SciPy z NumPy. V naslednjem primeru voznina kot funkcija starosti ne kaže nobenega opaznega trenda. Vendar pa lahko optimizacija omejitev spremeni vozovnico kot funkcijo starosti. Omejitveni pogoj v tem primeru je, da nova skupna prevoznina ostane enaka stari skupni ceni. Pretvorbe po meri Data Wrangler vam omogočajo, da zaženete funkcijo optimiziranja SciPy za določitev optimalnega koeficienta, ki lahko preoblikuje vozovnico kot funkcijo starosti pod pogoji omejitve.

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.

Definicijo optimizacije, definicijo cilja in več omejitev je mogoče omeniti kot različne funkcije pri oblikovanju optimizacije omejitev v transformaciji po meri Data Wrangler z uporabo SciPy in NumPy. Transformacije po meri lahko prinesejo tudi različne metode reševalnika, ki so na voljo kot del paketa za optimizacijo SciPy. Novo transformirano spremenljivko je mogoče ustvariti z množenjem optimalnega koeficienta z izvirnim stolpcem in dodajanjem obstoječim stolpcem Data Wranglerja. Oglejte si naslednjo kodo:

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

Funkcija pretvorbe po meri Data Wrangler ima zmožnost uporabniškega vmesnika za prikaz rezultatov optimizacijskih funkcij SciPy, kot je vrednost optimalnega koeficienta (ali več koeficientov).

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

Transformacije po meri s scikit-learn

scikit-učiti je modul Python za strojno učenje, zgrajen na vrhu SciPy. Je odprtokodna knjižnica ML, ki podpira nadzorovano in nenadzorovano učenje. Ponuja tudi različna orodja za prilagajanje modela, predhodno obdelavo podatkov, izbiro modela, vrednotenje modela in številne druge pripomočke.

Diskretizacija

Diskretizacija (drugače znan kot kvantizacija or zlaganje v smeti) ponuja način za razdelitev zveznih funkcij na diskretne vrednosti. Določenim naborom podatkov z zveznimi značilnostmi lahko koristi diskretizacija, saj lahko diskretizacija preoblikuje nabor zveznih atributov v enega s samo nominalnimi atributi. Enkratno kodirane diskretizirane funkcije lahko naredijo model bolj izrazit, hkrati pa ohranjajo interpretabilnost. Na primer, predprocesiranje z diskretizatorjem lahko vnese nelinearnost v linearne modele.

V naslednji kodi uporabljamo KBinsDiscretizer za diskretizacijo starostnega stolpca v 10 zabojev:

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

Na naslednjem posnetku zaslona lahko vidite natisnjene robove koša.

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

Enkratno kodiranje

Vrednosti v stolpcih Embarked so kategorične vrednosti. Zato moramo te nize predstaviti kot numerične vrednosti, da lahko izvedemo svojo klasifikacijo z našim modelom. To bi lahko naredili tudi s transformacijo enkratnega kodiranja.

Obstajajo tri vrednosti za Embarked: S, C in Q. Predstavljamo jih s številkami. Oglejte si naslednjo kodo:

# 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.

Čiščenje

Ko Data Wranglerja ne uporabljate, je pomembno, da zaustavite primerek, na katerem se izvaja, da se izognete dodatnim stroškom.

Data Wrangler samodejno shrani vaš pretok podatkov vsakih 60 sekund. Da preprečite izgubo dela, shranite pretok podatkov, preden zaustavite Data Wrangler.

  1. Če želite shraniti pretok podatkov v Studio, izberite file, nato izberite Shrani podatkovni tok Wranglerja.
  2. Če želite zaustaviti primerek Data Wrangler, v Studiu izberite Izvajanje primerkov in jeder.
  3. Pod TEKUČE APLIKACIJE, izberite ikono za zaustavitev poleg aplikacije sagemaker-data-wrangler-1.0.
  4. Izberite Zapri vse potrditi.

Data Wrangler deluje na primerku ml.m5.4xlarge. Ta primer izgine iz ZATOČNI PRIMERKI ko zaprete aplikacijo Data Wrangler.

Ko zaustavite aplikacijo Data Wrangler, se mora znova zagnati, ko naslednjič odprete datoteko toka Data Wrangler. To lahko traja nekaj minut.

zaključek

V tej objavi smo pokazali, kako lahko uporabite transformacije po meri v Data Wranglerju. Uporabili smo knjižnice in ogrodje v vsebniku Data Wrangler za razširitev vgrajenih zmožnosti pretvorbe podatkov. Primeri v tej objavi predstavljajo podnabor uporabljenih okvirov. Transformacije v toku Data Wrangler je zdaj mogoče povečati v cevovod za DataOps.

Če želite izvedeti več o uporabi podatkovnih tokov z Data Wranglerjem, glejte Ustvarite in uporabite Data Wrangler Flow in Cene Amazon SageMaker. Če želite začeti uporabljati Data Wrangler, glejte Pripravite podatke ML z Amazon SageMaker Data Wrangler. Če želite izvedeti več o Autopilotu in AutoML na SageMakerju, obiščite Avtomatizirajte razvoj modela z Amazon SageMaker Autopilot.


O avtorjih

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.Meenakshisundaram Thandavarayan je višji strokovnjak za AI/ML pri AWS. Pomaga visokotehnološkim strateškim računom na njihovi poti AI in ML. Zelo je navdušen nad AI, ki temelji na podatkih.

 Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.Sovik Kumar Nath je arhitekt rešitev AI/ML z AWS. Ima bogate izkušnje s celovitim dizajnom in rešitvami za strojno učenje; poslovna analitika v okviru finančne, operativne in marketinške analitike; skrb za zdravje; oskrbovalna veriga; in IoT. Zunaj dela Sovik uživa v potovanjih in gledanju filmov.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.Abigail je inženir za razvoj programske opreme pri Amazon SageMaker. Strastno želi pomagati strankam pri pripravi njihovih podatkov v DataWranglerju in graditi porazdeljene sisteme strojnega učenja. V prostem času Abigail uživa v potovanjih, pohodništvu, smučanju in peki.

Časovni žig:

Več od Strojno učenje AWS