Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved hjelp av NLTK og SciPy

Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved hjelp av NLTK og SciPy

"I stedet for å fokusere på koden, bør selskaper fokusere på å utvikle systematiske ingeniørpraksiser for å forbedre data på måter som er pålitelige, effektive og systematiske. Med andre ord, bedrifter må gå fra en modellsentrisk tilnærming til en datasentrisk tilnærming.» – Andrew Ng

En datasentrisk AI-tilnærming innebærer å bygge AI-systemer med kvalitetsdata som involverer dataforberedelse og funksjonsutvikling. Dette kan være en kjedelig oppgave som involverer datainnsamling, oppdagelse, profilering, rensing, strukturering, transformering, berikelse, validering og sikker lagring av dataene.

Amazon SageMaker Data Wrangler er en tjeneste i Amazon SageMaker Studio som gir en ende-til-ende-løsning for å importere, forberede, transformere, presentere og analysere data ved bruk av lite eller ingen koding. Du kan integrere en Data Wrangler-dataforberedelsesflyt i arbeidsflytene dine for maskinlæring (ML) for å forenkle dataforbehandling og funksjonsutvikling, og ta dataforberedelse til produksjon raskere uten å måtte skrive PySpark-kode, installere Apache Spark eller spinne opp klynger.

For scenarier der du må legge til dine egne tilpassede skript for datatransformasjoner, kan du skrive transformasjonslogikken din i Pandas, PySpark, PySpark SQL. Data Wrangler støtter nå NLTK- og SciPy-biblioteker for å lage tilpassede transformasjoner for å forberede tekstdata for ML og utføre begrensningsoptimalisering.

Du kan støte på scenarier der du må legge til dine egne tilpassede skript for datatransformasjon. Med Data Wranglers tilpassede transformasjonsevne kan du skrive transformasjonslogikken din i Pandas, PySpark, PySpark SQL.

I dette innlegget diskuterer vi hvordan du kan skrive din egendefinerte transformasjon i NLTK for å forberede tekstdata for ML. Vi vil også dele noen eksempler på tilpasset kodetransformasjon ved å bruke andre vanlige rammeverk som NLTK, NumPy, SciPy og scikit-learn samt AWS AI Services. For formålet med denne øvelsen bruker vi Titanic datasett, et populært datasett i ML-fellesskapet, som nå er lagt til som en eksempel datasett i Data Wrangler.

Løsningsoversikt

Data Wrangler har over 40 innebygde kontakter for import av data. Etter at data er importert, kan du bygge dataanalyse og transformasjoner ved hjelp av over 300 innebygde transformasjoner. Du kan deretter generere industrialiserte rørledninger for å presse funksjonene til Amazon enkel lagringstjeneste (Amazon S3) eller Amazon SageMaker Feature Store. Følgende diagram viser ende-til-ende høynivåarkitekturen.

Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Forutsetninger

Data Wrangler er en SageMaker-funksjon tilgjengelig innenfor Amazon SageMaker Studio. Du kan følge med innføringsprosessen i Studio for å spinne opp Studio-miljøet og notatbøker. Selv om du kan velge mellom noen få autentiseringsmetoder, er den enkleste måten å opprette et Studio-domene på å følge Instruksjoner for hurtigstart. Hurtigstart bruker de samme standardinnstillingene som standard Studio-oppsett. Du kan også velge å gå ombord ved å bruke AWS IAM Identity Center (etterfølger til AWS Single Sign-On) for autentisering (se Ombord på Amazon SageMaker Domain ved hjelp av IAM Identity Center).

Importer Titanic-datasettet

Start Studio-miljøet ditt og lag et nytt Data Wrangler flyt. Du kan enten importere ditt eget datasett eller bruke et eksempeldatasett (Titanic) som vist i følgende skjermbilde. Data Wrangler lar deg importere datasett fra forskjellige datakilder. For vår brukssituasjon importerer vi eksempeldatasettet fra en S3-bøtte.

Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Når den er importert, vil du se to noder (kildenoden og datatypenoden) i dataflyten. Data Wrangler identifiserer automatisk datatypen for alle kolonnene i datasettet.

Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Tilpassede transformasjoner med NLTK

For dataforberedelse og funksjonsutvikling med Data Wrangler kan du bruke over 300 innebygde transformasjoner eller bygge dine egne tilpassede transformasjoner. Egendefinerte transformasjoner kan skrives som separate trinn i Data Wrangler. De blir en del av .flow-filen i Data Wrangler. Den tilpassede transformasjonsfunksjonen støtter Python, PySpark og SQL som forskjellige trinn i kodebiter. Etter at notatbokfiler (.ipynb) er generert fra .flow-filen eller .flow-filen er brukt som oppskrifter, fortsetter de tilpassede transformasjonskodebitene uten å kreve noen endringer. Denne utformingen av Data Wrangler lar tilpassede transformasjoner bli en del av en SageMaker Processing-jobb for å behandle massive datasett med tilpassede transformasjoner.

Titanic-datasettet har et par funksjoner (navn og home.dest) som inneholder tekstinformasjon. Vi bruker NLTK for å dele navnekolonnen og trekke ut etternavnet, og skrive ut hyppigheten av etternavn. NLTK er en ledende plattform for å bygge Python-programmer for å jobbe med menneskelige språkdata. Det gir brukervennlige grensesnitt til over 50 korpus og leksikalske ressurser som WordNet, sammen med en pakke med tekstbehandlingsbiblioteker for klassifisering, tokenisering, stemming, tagging, parsing og semantisk resonnement, og innpakninger for NLP-biblioteker (natural language processing) med industriell styrke.

For å legge til en ny transformasjon, fullfør følgende trinn:

  1. Velg plusstegnet og velg Legg til Transform.
  2. Velg Legg til trinn Og velg Egendefinert transformasjon.

Du kan lage en tilpasset transformasjon ved å bruke Pandas, PySpark, Python brukerdefinerte funksjoner og SQL PySpark.

Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

  1. Velg Python (Pandaer) og legg til følgende kode for å trekke ut etternavnet fra navnekolonnen:
    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. Velg Forhåndsvisning for å gjennomgå resultatene.

Følgende skjermbilde viser last_name kolonne ekstrahert.

Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

  1. Legg til et nytt tilpasset transformertrinn for å identifisere frekvensfordelingen til etternavnene, ved å bruke følgende kode:
    import nltk
    fd = nltk.FreqDist(df["last_name"])
    print(fd.most_common(10))

  2. Velg Forhåndsvisning for å gjennomgå resultatene av frekvensen.Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Tilpassede transformasjoner med AWS AI-tjenester

AWS forhåndstrente AI-tjenester gir ferdiglagd intelligens for applikasjonene og arbeidsflytene dine. AWS AI-tjenester integreres enkelt med applikasjonene dine for å håndtere mange vanlige brukstilfeller. Du kan nå bruke funksjonene for AWS AI-tjenester som et tilpasset transformasjonstrinn i Data Wrangler.

Amazon Comprehend bruker NLP for å hente ut innsikt om innholdet i dokumenter. Den utvikler innsikt ved å gjenkjenne enhetene, nøkkelsetningene, språket, følelsene og andre vanlige elementer i et dokument.

Vi bruker Amazon Comprehend for å trekke ut enhetene fra navnekolonnen. Fullfør følgende trinn:

  1. Legg til et tilpasset transformasjonstrinn.
  2. Velg Python (Pandaer).
  3. Skriv inn følgende kode for å trekke ut enhetene:
    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. Velg Forhåndsvisning og visualisere resultatene.

Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Vi har nå lagt til tre tilpassede transformasjoner i Data Wrangler.

  1. Velg Dataflyt for å visualisere dataflyten fra ende til ende.

Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Tilpassede transformasjoner med NumPy og SciPy

nusset er et åpen kildekode-bibliotek for Python som tilbyr omfattende matematiske funksjoner, tilfeldige tallgeneratorer, lineære algebrarutiner, Fourier-transformasjoner og mer. SciPy er et åpen kildekode Python-bibliotek som brukes til vitenskapelig databehandling og teknisk databehandling, som inneholder moduler for optimalisering, lineær algebra, integrasjon, interpolasjon, spesialfunksjoner, rask Fourier-transformasjon (FFT), signal- og bildebehandling, løsere og mer.

Data Wrangler-tilpassede transformasjoner lar deg kombinere Python, PySpark og SQL som forskjellige trinn. I den følgende Data Wrangler-flyten brukes forskjellige funksjoner fra Python-pakker, NumPy og SciPy på Titanic-datasettet som flere trinn.

Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

NumPy-transformasjoner

Priskolonnen i Titanic-datasettet har ombordstigningspriser for forskjellige passasjerer. Histogrammet til billettpriskolonnen viser jevn fordeling, bortsett fra den siste søppelkassen. Ved å bruke NumPy-transformasjoner som log eller kvadratrot, kan vi endre fordelingen (som vist med kvadratrottransformasjonen).

Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai. Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Se følgende kode:

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

SciPy-funksjoner som z-score brukes som en del av den tilpassede transformasjonen for å standardisere prisfordeling med gjennomsnitt og standardavvik.

Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Se følgende kode:

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

Begrensningsoptimalisering med NumPy og SciPy

Data Wrangler-tilpassede transformasjoner kan håndtere avanserte transformasjoner som begrensningsoptimalisering ved å bruke SciPy-optimaliseringsfunksjoner og kombinere SciPy med NumPy. I det følgende eksempelet viser ikke prisen som en funksjon av alder noen observerbar trend. Begrensningsoptimalisering kan imidlertid transformere prisen som en funksjon av alder. Begrensningsbetingelsen i dette tilfellet er at den nye totalprisen forblir den samme som den gamle totalprisen. Data Wrangler-tilpassede transformasjoner lar deg kjøre SciPy-optimaliseringsfunksjonen for å bestemme den optimale koeffisienten som kan transformere billettprisen som en funksjon av alder under begrensninger.

Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai. Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Optimaliseringsdefinisjon, objektivdefinisjon og flere begrensninger kan nevnes som forskjellige funksjoner mens man formulerer begrensningsoptimalisering i en tilpasset Data Wrangler-transformasjon ved bruk av SciPy og NumPy. Tilpassede transformasjoner kan også bringe forskjellige løsermetoder som er tilgjengelige som en del av SciPy-optimaliseringspakken. En ny transformert variabel kan genereres ved å multiplisere den optimale koeffisienten med den opprinnelige kolonnen og legges til eksisterende kolonner i Data Wrangler. Se følgende kode:

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

Data Wrangler-tilpassede transformasjonsfunksjonen har UI-evnen til å vise resultatene av SciPy-optimaliseringsfunksjoner som verdien av optimal koeffisient (eller flere koeffisienter).

Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Tilpassede transformasjoner med scikit-learn

scikit lære er en Python-modul for maskinlæring bygget på toppen av SciPy. Det er et åpen kildekode ML-bibliotek som støtter veiledet og uovervåket læring. Den gir også ulike verktøy for modelltilpasning, dataforbehandling, modellvalg, modellevaluering og mange andre verktøy.

Diskretisering

Diskretisering (ellers kjent som kvantisering or binning) gir en måte å partisjonere kontinuerlige funksjoner i diskrete verdier. Visse datasett med kontinuerlige funksjoner kan ha nytte av diskretisering, fordi diskretisering kan transformere datasettet med kontinuerlige attributter til et med bare nominelle attributter. One-hot kodede diskretiserte funksjoner kan gjøre en modell mer uttrykksfull, samtidig som tolkningen opprettholdes. For eksempel kan forbehandling med en diskretisering introdusere ikke-linearitet til lineære modeller.

I følgende kode bruker vi KBinsDiscretizer for å diskretisere alderskolonnen i 10 søppelkasser:

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

Du kan se skuffekantene skrevet ut på følgende skjermbilde.

Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

One-hot-koding

Verdier i Embarked-kolonnene er kategoriske verdier. Derfor må vi representere disse strengene som numeriske verdier for å utføre vår klassifisering med modellen vår. Vi kan også gjøre dette ved å bruke en en-hot-kodingstransformasjon.

Det er tre verdier for Embarked: S, C og Q. Vi representerer disse med tall. Se følgende kode:

# 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

Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Rydd opp

Når du ikke bruker Data Wrangler, er det viktig å slå av forekomsten den kjører på for å unngå å pådra deg ekstra avgifter.

Data Wrangler lagrer automatisk dataflyten hvert 60. sekund. For å unngå å miste arbeid, lagre dataflyten før du slår av Data Wrangler.

  1. For å lagre dataflyten din i Studio, velg filet, velg deretter Lagre data Wrangler Flow.
  2. For å slå av Data Wrangler-forekomsten, i Studio, velg Kjører forekomster og kjerner.
  3. Under KJØRER APPER, velg avslutningsikonet ved siden av sagemaker-data-wrangler-1.0-appen.
  4. Velg Slå av alt å bekrefte.

Data Wrangler kjører på en ml.m5.4xlarge instans. Denne instansen forsvinner fra KJØRINGSINSTANSER når du slår av Data Wrangler-appen.

Etter at du har slått av Data Wrangler-appen, må den starte på nytt neste gang du åpner en Data Wrangler-flytfil. Dette kan ta noen minutter.

konklusjonen

I dette innlegget demonstrerte vi hvordan du kan bruke tilpassede transformasjoner i Data Wrangler. Vi brukte bibliotekene og rammeverket i Data Wrangler-beholderen for å utvide de innebygde datatransformasjonsmulighetene. Eksemplene i dette innlegget representerer en undergruppe av rammeverket som brukes. Transformasjonene i Data Wrangler-flyten kan nå skaleres inn til en pipeline for DataOps.

For å lære mer om bruk av dataflyter med Data Wrangler, se Opprett og bruk en Data Wrangler-flyt og Amazon SageMaker-priser. For å komme i gang med Data Wrangler, se Forbered ML-data med Amazon SageMaker Data Wrangler. For å lære mer om Autopilot og AutoML på SageMaker, besøk Automatiser modellutvikling med Amazon SageMaker Autopilot.


Om forfatterne

Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Meenakshisundaram Thandavarayan er en senior AI/ML-spesialist med AWS. Han hjelper høyteknologiske strategiske kontoer på deres AI- og ML-reise. Han er veldig lidenskapelig opptatt av datadrevet AI.

 Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Sovik Kumar Nath er en AI/ML løsningsarkitekt med AWS. Han har lang erfaring med ende-til-ende-design og løsninger for maskinlæring; forretningsanalyse innen finansiell, operasjonell og markedsanalyse; helsevesen; forsyningskjede; og IoT. Utenfor jobben liker Sovik å reise og se på film.

Forfatter tilpassede transformasjoner i Amazon SageMaker Data Wrangler ved å bruke NLTK og SciPy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Abigail er programvareutviklingsingeniør hos Amazon SageMaker. Hun brenner for å hjelpe kunder med å forberede dataene sine i DataWrangler og bygge distribuerte maskinlæringssystemer. På fritiden liker Abigail å reise, gå på tur, gå på ski og bake.

Tidstempel:

Mer fra AWS maskinlæring