Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy

Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy

"I stedet for at fokusere på koden, bør virksomheder fokusere på at udvikle systematisk ingeniørpraksis til at forbedre data på måder, der er pålidelige, effektive og systematiske. Med andre ord skal virksomheder bevæge sig fra en modelcentreret tilgang til en datacentreret tilgang." – Andrew Ng

En datacentreret AI-tilgang involverer at bygge AI-systemer med kvalitetsdata, der involverer dataforberedelse og funktionsudvikling. Dette kan være en kedelig opgave, der involverer dataindsamling, opdagelse, profilering, rensning, strukturering, transformation, berigelse, validering og sikker lagring af dataene.

Amazon SageMaker Data Wrangler er en tjeneste i Amazon SageMaker Studio der giver en end-to-end-løsning til at importere, forberede, transformere, fremhæve og analysere data ved brug af lidt eller ingen kodning. Du kan integrere et Data Wrangler-dataforberedelsesflow i dine maskinlærings-(ML)-workflows for at forenkle dataforbehandling og funktionsteknologi, og tage dataforberedelse til produktion hurtigere uden at skulle oprette PySpark-kode, installere Apache Spark eller oprette klynger.

For scenarier, hvor du skal tilføje dine egne brugerdefinerede scripts til datatransformationer, kan du skrive din transformationslogik i Pandas, PySpark, PySpark SQL. Data Wrangler understøtter nu NLTK- og SciPy-biblioteker til at oprette brugerdefinerede transformationer for at forberede tekstdata til ML og udføre begrænsningsoptimering.

Du kan løbe ind i scenarier, hvor du skal tilføje dine egne brugerdefinerede scripts til datatransformation. Med Data Wranglers tilpassede transformationsfunktion kan du skrive din transformationslogik i Pandas, PySpark, PySpark SQL.

I dette indlæg diskuterer vi, hvordan du kan skrive din tilpassede transformation i NLTK for at forberede tekstdata til ML. Vi vil også dele nogle eksempler på tilpasset kodetransformation ved hjælp af andre almindelige rammer såsom NLTK, NumPy, SciPy og scikit-learn samt AWS AI Services. Til formålet med denne øvelse bruger vi Titanic datasæt, et populært datasæt i ML-fællesskabet, som nu er tilføjet som en eksempeldatasæt i Data Wrangler.

Løsningsoversigt

Data Wrangler har over 40 indbyggede stik til import af data. Efter data er importeret, kan du bygge din dataanalyse og transformationer ved hjælp af over 300 indbyggede transformationer. Du kan derefter generere industrialiserede rørledninger for at skubbe funktionerne til Amazon Simple Storage Service (Amazon S3) eller Amazon SageMaker Feature Store. Følgende diagram viser ende-til-ende højniveau-arkitekturen.

Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Forudsætninger

Data Wrangler er en SageMaker-funktion tilgængelig indenfor Amazon SageMaker Studio. Du kan følge med onboarding-processen i Studio at skrue op for Studio-miljøet og notesbøgerne. Selvom du kan vælge mellem et par godkendelsesmetoder, er den nemmeste måde at oprette et Studio-domæne på at følge Instruktioner til hurtig start. Hurtig start bruger de samme standardindstillinger som standard Studio-opsætningen. Du kan også vælge at ombord vha AWS IAM Identity Center (efterfølger til AWS Single Sign-On) til godkendelse (se Ombord på Amazon SageMaker Domain ved hjælp af IAM Identity Center).

Importer Titanic-datasættet

Start dit Studio-miljø og opret et nyt Data Wrangler flow. Du kan enten importere dit eget datasæt eller bruge et eksempeldatasæt (Titanic) som vist på det følgende skærmbillede. Data Wrangler giver dig mulighed for at importere datasæt fra forskellige datakilder. Til vores brug importerer vi prøvedatasættet fra en S3-bøtte.

Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Når du først er importeret, vil du se to noder (kildenoden og datatypeknuden) i datastrømmen. Data Wrangler identificerer automatisk datatypen for alle kolonnerne i datasættet.

Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Brugerdefinerede transformationer med NLTK

Til dataforberedelse og funktionsudvikling med Data Wrangler kan du bruge over 300 indbyggede transformationer eller bygge dine egne brugerdefinerede transformationer. Brugerdefinerede transformationer kan skrives som separate trin i Data Wrangler. De bliver en del af .flow-filen i Data Wrangler. Den brugerdefinerede transformationsfunktion understøtter Python, PySpark og SQL som forskellige trin i kodestykker. Efter at notesbogsfiler (.ipynb) er genereret fra .flow-filen, eller .flow-filen er brugt som opskrifter, fortsætter de tilpassede transformationskodestykker uden at kræve ændringer. Dette design af Data Wrangler gør det muligt for brugerdefinerede transformationer at blive en del af et SageMaker Processing-job til behandling af massive datasæt med tilpassede transformationer.

Titanic-datasættet har et par funktioner (navn og home.dest), der indeholder tekstinformation. Vi bruger NLTK at opdele navnekolonnen og udtrække efternavnet og udskrive hyppigheden af ​​efternavne. NLTK er en førende platform til at bygge Python-programmer til at arbejde med menneskelige sprogdata. Det giver brugervenlige grænseflader til over 50 korpus og leksikale ressourcer såsom WordNet, sammen med en suite af tekstbehandlingsbiblioteker til klassificering, tokenisering, stemming, tagging, parsing og semantisk ræsonnement, og indpakninger til NLP-biblioteker (natural-force natural language processing).

For at tilføje en ny transformation skal du udføre følgende trin:

  1. Vælg plustegnet og vælg Tilføj Transform.
  2. Vælg Tilføj trin Og vælg Brugerdefineret transformation.

Du kan oprette en brugerdefineret transformation ved hjælp af Pandas, PySpark, Python brugerdefinerede funktioner og SQL PySpark.

Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

  1. Vælg Python (Pandas) og tilføj følgende kode for at udtrække efternavnet 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. Vælg Eksempel at gennemgå resultaterne.

Følgende skærmbillede viser last_name kolonne ekstraheret.

Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

  1. Tilføj endnu et brugerdefineret transformationstrin for at identificere frekvensfordelingen af ​​efternavnene ved hjælp af følgende kode:
    import nltk
    fd = nltk.FreqDist(df["last_name"])
    print(fd.most_common(10))

  2. Vælg Eksempel at gennemgå resultaterne af frekvensen.Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Tilpassede transformationer med AWS AI-tjenester

AWS præ-trænede AI-tjenester giver færdiglavet intelligens til dine applikationer og arbejdsgange. AWS AI-tjenester integreres nemt med dine applikationer for at løse mange almindelige brugssager. Du kan nu bruge funktionerne til AWS AI-tjenester som et tilpasset transformationstrin i Data Wrangler.

Amazon Comprehend bruger NLP til at udtrække indsigt om indholdet af dokumenter. Det udvikler indsigt ved at genkende entiteter, nøglesætninger, sprog, følelser og andre almindelige elementer i et dokument.

Vi bruger Amazon Comprehend til at udtrække entiteterne fra navnekolonnen. Udfør følgende trin:

  1. Tilføj et tilpasset transformationstrin.
  2. Vælg Python (Pandas).
  3. Indtast følgende kode for at udtrække enhederne:
    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. Vælg Eksempel og visualisere resultaterne.

Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Vi har nu tilføjet tre brugerdefinerede transformationer i Data Wrangler.

  1. Vælg Dataflow at visualisere ende-til-ende dataflow.

Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Brugerdefinerede transformationer med NumPy og SciPy

nusset er et open source-bibliotek til Python, der tilbyder omfattende matematiske funktioner, generatorer af tilfældige tal, lineære algebrarutiner, Fourier-transformationer og mere. SciPy er et open source Python-bibliotek, der bruges til videnskabelig databehandling og teknisk databehandling, indeholdende moduler til optimering, lineær algebra, integration, interpolation, specialfunktioner, hurtig Fourier-transformation (FFT), signal- og billedbehandling, løsere og mere.

Data Wrangler brugerdefinerede transformationer giver dig mulighed for at kombinere Python, PySpark og SQL som forskellige trin. I det følgende Data Wrangler-flow anvendes forskellige funktioner fra Python-pakker, NumPy og SciPy på Titanic-datasættet som flere trin.

Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

NumPy-transformationer

Priskolonnen i Titanic-datasættet har boardingpriser for forskellige passagerer. Histogrammet for billetpriskolonnen viser ensartet fordeling, bortset fra den sidste skraldespand. Ved at anvende NumPy-transformationer som log eller kvadratrod, kan vi ændre fordelingen (som vist ved kvadratrodstransformationen).

Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai. Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. 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-transformationer

SciPy-funktioner som z-score anvendes som en del af den tilpassede transformation for at standardisere billetprisfordelingen med middelværdi og standardafvigelse.

Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Se følgende kode:

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

Begrænsningsoptimering med NumPy og SciPy

Data Wrangler brugerdefinerede transformationer kan håndtere avancerede transformationer som begrænsningsoptimering ved at anvende SciPy-optimeringsfunktioner og kombinere SciPy med NumPy. I det følgende eksempel viser billetprisen som funktion af alder ikke nogen observerbar tendens. Begrænsningsoptimering kan dog ændre billetprisen som en funktion af alder. Begrænsningsbetingelsen i dette tilfælde er, at den nye samlede billetpris forbliver den samme som den gamle samlede billetpris. Data Wrangler brugerdefinerede transformationer giver dig mulighed for at køre SciPy-optimeringsfunktionen for at bestemme den optimale koefficient, der kan transformere billetprisen som en funktion af alder under betingelser.

Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai. Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Optimeringsdefinition, objektiv definition og flere begrænsninger kan nævnes som forskellige funktioner, mens der formuleres begrænsningsoptimering i en tilpasset Data Wrangler-transformation ved hjælp af SciPy og NumPy. Brugerdefinerede transformationer kan også bringe forskellige solvermetoder, der er tilgængelige som en del af SciPy-optimeringspakken. En ny transformeret variabel kan genereres ved at gange den optimale koefficient med den oprindelige kolonne og tilføjes 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 brugerdefinerede transformationsfunktion har UI-kapaciteten til at vise resultaterne af SciPy-optimeringsfunktioner som værdien af ​​optimal koefficient (eller flere koefficienter).

Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Tilpassede transformationer med scikit-learn

scikit-lære er et Python-modul til maskinlæring bygget oven på SciPy. Det er et open source ML-bibliotek, der understøtter overvåget og uovervåget læring. Det giver også forskellige værktøjer til modeltilpasning, dataforbehandling, modelvalg, modelevaluering og mange andre hjælpeprogrammer.

Diskretisering

Diskretisering (ellers kendt som kvantisering or binning) giver en måde at opdele kontinuerlige funktioner i diskrete værdier. Visse datasæt med kontinuerlige funktioner kan drage fordel af diskretisering, fordi diskretisering kan transformere datasættet af kontinuerlige attributter til et med kun nominelle attributter. One-hot kodede diskretiserede funktioner kan gøre en model mere udtryksfuld, samtidig med at fortolkningen bevares. For eksempel kan forbehandling med en diskretizer introducere ikke-linearitet til lineære modeller.

I den følgende kode bruger vi KBinsDiscretizer for at diskretisere alderskolonnen i 10 skraldespande:

# 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 beholderens kanter udskrevet på det følgende skærmbillede.

Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

One-hot-kodning

Værdier i kolonnerne Embarked er kategoriske værdier. Derfor er vi nødt til at repræsentere disse strenge som numeriske værdier for at udføre vores klassificering med vores model. Vi kunne også gøre dette ved at bruge en one-hot-kodningstransformation.

Der er tre værdier for Embarked: S, C og Q. Vi repræsenterer disse med tal. 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 transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Ryd op

Når du ikke bruger Data Wrangler, er det vigtigt at lukke den instans, den kører på, for at undgå at pådrage sig yderligere gebyrer.

Data Wrangler gemmer automatisk dit dataflow hvert 60. sekund. For at undgå at miste arbejde skal du gemme dit dataflow, før du lukker Data Wrangler ned.

  1. Vælg for at gemme dit dataflow i Studio File (Felt), Og vælg derefter Gem data Wrangler Flow.
  2. For at lukke Data Wrangler-forekomsten ned i Studio skal du vælge Kører forekomster og kerner.
  3. Under KØRENDE APPS, skal du vælge nedlukningsikonet ud for sagemaker-data-wrangler-1.0-appen.
  4. Vælg Luk alt sammen at bekræfte.

Data Wrangler kører på en ml.m5.4xlarge instans. Denne instans forsvinder fra LØBENDE INSTANSER når du lukker Data Wrangler-appen ned.

Når du har lukket Data Wrangler-appen ned, skal den genstarte, næste gang du åbner en Data Wrangler-flowfil. Dette kan tage et par minutter.

Konklusion

I dette indlæg demonstrerede vi, hvordan du kan bruge tilpassede transformationer i Data Wrangler. Vi brugte bibliotekerne og rammerne i Data Wrangler-containeren til at udvide de indbyggede datatransformationsmuligheder. Eksemplerne i dette indlæg repræsenterer en delmængde af de anvendte rammer. Transformationerne i Data Wrangler-flowet kan nu skaleres ind i en pipeline til DataOps.

For at lære mere om brug af datastrømme med Data Wrangler, se Opret og brug et datawrangler-flow , Amazon SageMaker-priser. For at komme i gang med Data Wrangler, se Forbered ML Data med Amazon SageMaker Data Wrangler. For at lære mere om Autopilot og AutoML på SageMaker, besøg Automatiser modeludvikling med Amazon SageMaker Autopilot.


Om forfatterne

Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Meenakshisundaram Thandavarayan er senior AI/ML specialist med AWS. Han hjælper hi-tech strategiske konti på deres AI og ML rejse. Han er meget passioneret omkring datadrevet AI.

 Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Sovik Kumar Nath er AI/ML løsningsarkitekt med AWS. Han har stor erfaring med end-to-end design og løsninger til maskinlæring; forretningsanalyse inden for finansiel, operationel og marketinganalyse; sundhedspleje; forsyningskæde; og IoT. Uden for arbejdet nyder Sovik at rejse og se film.

Forfatter tilpassede transformationer i Amazon SageMaker Data Wrangler ved hjælp af NLTK og SciPy PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Abigail er softwareudviklingsingeniør hos Amazon SageMaker. Hun brænder for at hjælpe kunder med at forberede deres data i DataWrangler og bygge distribuerede maskinlæringssystemer. I sin fritid nyder Abigail at rejse, vandre, stå på ski og bage.

Tidsstempel:

Mere fra AWS maskinindlæring