Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy

Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy

"Istället för att fokusera på koden bör företag fokusera på att utveckla systematiska ingenjörsmetoder för att förbättra data på ett sätt som är tillförlitligt, effektivt och systematiskt. Med andra ord måste företag gå från ett modellcentrerat tillvägagångssätt till ett datacentrerat tillvägagångssätt.” – Andrew Ng

En datacentrerad AI-metod innebär att bygga AI-system med kvalitetsdata som involverar dataförberedelse och funktionsteknik. Detta kan vara en tråkig uppgift som involverar datainsamling, upptäckt, profilering, rensning, strukturering, transformering, berikning, validering och säker lagring av data.

Amazon SageMaker Data Wrangler är en tjänst i Amazon SageMaker Studio som ger en helhetslösning för att importera, förbereda, transformera, presentera och analysera data med lite eller ingen kodning. Du kan integrera ett Data Wrangler-dataförberedande flöde i dina arbetsflöden för maskininlärning (ML) för att förenkla dataförbearbetning och funktionsteknik, ta dataförberedelse till produktion snabbare utan att behöva skriva PySpark-kod, installera Apache Spark eller skapa kluster.

För scenarier där du behöver lägga till dina egna anpassade skript för datatransformationer kan du skriva din transformationslogik i Pandas, PySpark, PySpark SQL. Data Wrangler stöder nu NLTK- och SciPy-bibliotek för att skapa anpassade transformationer för att förbereda textdata för ML och utföra begränsningsoptimering.

Du kan stöta på scenarier där du måste lägga till dina egna anpassade skript för datatransformation. Med Data Wranglers anpassade transformeringskapacitet kan du skriva din transformationslogik i Pandas, PySpark, PySpark SQL.

I det här inlägget diskuterar vi hur du kan skriva din anpassade transformation i NLTK för att förbereda textdata för ML. Vi kommer också att dela några exempel på anpassad kodtransform med andra vanliga ramverk som NLTK, NumPy, SciPy och scikit-learn samt AWS AI Services. För syftet med denna övning använder vi Titanic-dataset, en populär datauppsättning i ML-gemenskapen, som nu har lagts till som en exempeluppsättning inom Data Wrangler.

Lösningsöversikt

Data Wrangler tillhandahåller över 40 inbyggda kontakter för att importera data. Efter att data har importerats kan du bygga din dataanalys och transformationer med över 300 inbyggda transformationer. Du kan sedan generera industrialiserade pipelines för att driva funktionerna till Amazon enkel lagringstjänst (Amazon S3) eller Amazon SageMaker Feature Store. Följande diagram visar helhetsarkitekturen på hög nivå.

Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Förutsättningar

Data Wrangler är en SageMaker-funktion tillgänglig inom Amazon SageMaker Studio. Du kan följa introduktionsprocessen för Studio för att snurra upp Studio-miljön och anteckningsböckerna. Även om du kan välja mellan några få autentiseringsmetoder, är det enklaste sättet att skapa en Studio-domän att följa Snabbstartinstruktioner. Snabbstarten använder samma standardinställningar som standardinställningarna i Studio. Du kan också välja att ombord använda Aws iam identitetscenter (efterträdare till AWS Single Sign-On) för autentisering (se Ombord på Amazon SageMaker Domain med IAM Identity Center).

Importera Titanic-datauppsättningen

Starta din Studio-miljö och skapa en ny Data Wrangler-flöde. Du kan antingen importera din egen datauppsättning eller använda en exempeldatauppsättning (Titanic) som visas i följande skärmdump. Data Wrangler låter dig importera datamängder från olika datakällor. För vårt användningsfall importerar vi provdatauppsättningen från en S3-hink.

Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

När du har importerat kommer du att se två noder (källnoden och datatypsnoden) i dataflödet. Data Wrangler identifierar automatiskt datatypen för alla kolumner i datamängden.

Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Anpassade transformationer med NLTK

För dataförberedelse och funktionsutveckling med Data Wrangler kan du använda över 300 inbyggda transformationer eller bygga dina egna anpassade transformationer. Anpassade transformationer kan skrivas som separata steg i Data Wrangler. De blir en del av .flow-filen i Data Wrangler. Den anpassade transformeringsfunktionen stöder Python, PySpark och SQL som olika steg i kodavsnitt. Efter att anteckningsbokfiler (.ipynb) har genererats från .flow-filen eller .flow-filen används som recept, kvarstår de anpassade transformeringskodavsnitten utan att några ändringar krävs. Denna design av Data Wrangler tillåter anpassade transformationer att bli en del av ett SageMaker Processing-jobb för bearbetning av enorma datamängder med anpassade transformationer.

Titanic dataset har ett par funktioner (namn och home.dest) som innehåller textinformation. Vi använder Nltk för att dela namnkolumnen och extrahera efternamnet och skriva ut frekvensen av efternamn. NLTK är en ledande plattform för att bygga Python-program för att arbeta med mänskliga språkdata. Det ger lättanvända gränssnitt till över 50 korpus och lexikaliska resurser som WordNet, tillsammans med en svit av textbehandlingsbibliotek för klassificering, tokenisering, stemming, taggning, analys och semantiska resonemang, och omslag för NLP-bibliotek (natural language processing) med industriell styrka.

För att lägga till en ny transformation, utför följande steg:

  1. Välj plustecknet och välj Lägg till Transform.
  2. Välja Lägg till steg Och välj Anpassad omvandling.

Du kan skapa en anpassad transformation med Pandas, PySpark, Python användardefinierade funktioner och SQL PySpark.

Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

  1. Välja Python (Pandor) och lägg till följande kod för att extrahera efternamnet från namnkolumnen:
    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älja Förhandsvisning för att granska resultaten.

Följande skärmdump visar last_name kolonn extraherades.

Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

  1. Lägg till ytterligare ett anpassat transformeringssteg för att identifiera frekvensfördelningen av efternamnen, med hjälp av följande kod:
    import nltk
    fd = nltk.FreqDist(df["last_name"])
    print(fd.most_common(10))

  2. Välja Förhandsvisning för att granska resultatet av frekvensen.Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Anpassade transformationer med AWS AI-tjänster

AWS förutbildade AI-tjänster ger färdig intelligens för dina applikationer och arbetsflöden. AWS AI-tjänster integreras enkelt med dina applikationer för att hantera många vanliga användningsfall. Du kan nu använda funktionerna för AWS AI-tjänster som ett anpassat transformeringssteg i Data Wrangler.

Amazon Comprehend använder NLP för att extrahera insikter om innehållet i dokument. Den utvecklar insikter genom att känna igen enheter, nyckelfraser, språk, känslor och andra vanliga element i ett dokument.

Vi använder Amazon Comprehend för att extrahera enheterna från namnkolumnen. Slutför följande steg:

  1. Lägg till ett anpassat transformeringssteg.
  2. Välja Python (Pandor).
  3. Ange följande kod för att extrahera enheterna:
    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älja Förhandsvisning och visualisera resultatet.

Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Vi har nu lagt till tre anpassade transformeringar i Data Wrangler.

  1. Välja Data flöde för att visualisera dataflödet från slut till ände.

Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Anpassade transformationer med NumPy och SciPy

numpy är ett bibliotek med öppen källkod för Python som erbjuder omfattande matematiska funktioner, slumptalsgeneratorer, linjära algebrarutiner, Fourier-transformationer och mer. SciPy är ett Python-bibliotek med öppen källkod som används för vetenskaplig beräkning och teknisk beräkning, som innehåller moduler för optimering, linjär algebra, integration, interpolation, specialfunktioner, snabb Fourier-transform (FFT), signal- och bildbehandling, lösare med mera.

Data Wrangler anpassade transformationer låter dig kombinera Python, PySpark och SQL som olika steg. I följande Data Wrangler-flöde tillämpas olika funktioner från Python-paket, NumPy och SciPy på Titanic-datasetet som flera steg.

Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

NumPy-transformationer

Priskolumnen i Titanic-datauppsättningen har ombordstigningspriser för olika passagerare. Histogrammet för priskolumnen visar enhetlig fördelning, med undantag för det sista facket. Genom att tillämpa NumPy-transformationer som log eller kvadratrot kan vi ändra fördelningen (som visas av kvadratrotstransformationen).

Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai. Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Se följande kod:

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 används som en del av den anpassade transformationen för att standardisera prisfördelningen med medelvärde och standardavvikelse.

Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Se följande kod:

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

Begränsningsoptimering med NumPy och SciPy

Data Wrangler anpassade transformationer kan hantera avancerade transformationer som begränsningsoptimering genom att tillämpa SciPy-optimeringsfunktioner och kombinera SciPy med NumPy. I följande exempel visar priset som funktion av ålder ingen observerbar trend. Men optimering av restriktioner kan förändra biljettpriset som en funktion av ålder. Begränsningsvillkoret i detta fall är att det nya totalpriset förblir detsamma som det gamla totalpriset. Data Wrangler anpassade transformationer låter dig köra SciPy-optimeringsfunktionen för att bestämma den optimala koefficienten som kan förändra biljettpriset som en funktion av ålder under begränsade förhållanden.

Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai. Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Optimeringsdefinition, objektivdefinition och flera begränsningar kan nämnas som olika funktioner samtidigt som begränsningsoptimering formuleras i en anpassad Data Wrangler-transform med SciPy och NumPy. Anpassade transformationer kan också ta med olika lösaremetoder som är tillgängliga som en del av SciPy optimize-paketet. En ny transformerad variabel kan genereras genom att multiplicera den optimala koefficienten med den ursprungliga kolumnen och läggas till befintliga kolumner i Data Wrangler. Se följande kod:

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 Wranglers anpassade transformeringsfunktion har UI-kapaciteten att visa resultaten av SciPy-optimeringsfunktioner som värdet på optimal koefficient (eller flera koefficienter).

Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Anpassade transformationer med scikit-learn

scikit lära är en Python-modul för maskininlärning byggd ovanpå SciPy. Det är ett ML-bibliotek med öppen källkod som stöder övervakat och oövervakat lärande. Den tillhandahåller också olika verktyg för modellanpassning, dataförbehandling, modellval, modellutvärdering och många andra verktyg.

Diskretisering

Diskretisering (annars känd som kvantisering or binning) ger ett sätt att dela upp kontinuerliga funktioner i diskreta värden. Vissa datauppsättningar med kontinuerliga funktioner kan dra nytta av diskretisering, eftersom diskretisering kan omvandla datauppsättningen med kontinuerliga attribut till en med endast nominella attribut. One-hot kodade diskretiserade funktioner kan göra en modell mer uttrycksfull, samtidigt som tolkningsbarheten bibehålls. Till exempel kan förbearbetning med en diskretiserare introducera olinjäritet i linjära modeller.

I följande kod använder vi KBinsDiscretizer för att diskretisera ålderskolumnen i 10 fack:

# 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 papperskorgens kanter utskrivna på följande skärmdump.

Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

One-hot-kodning

Värden i Embarked-kolumnerna är kategoriska värden. Därför måste vi representera dessa strängar som numeriska värden för att kunna utföra vår klassificering med vår modell. Vi skulle också kunna göra detta med en en-hot-kodningstransform.

Det finns tre värden för Embarked: S, C och Q. Vi representerar dessa med siffror. Se följande kod:

# 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

Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Städa upp

När du inte använder Data Wrangler är det viktigt att stänga av instansen som den körs på för att undvika extra avgifter.

Data Wrangler sparar automatiskt ditt dataflöde var 60:e sekund. För att undvika att förlora arbete, spara ditt dataflöde innan du stänger av Data Wrangler.

  1. För att spara ditt dataflöde i Studio, välj FilOch välj sedan Spara data Wrangler Flow.
  2. För att stänga av Data Wrangler-instansen, i Studio, välj Löpande instanser och kärnor.
  3. Enligt KÖR APPAR, välj avstängningsikonen bredvid sagemaker-data-wrangler-1.0-appen.
  4. Välja Stäng av allt att bekräfta.

Data Wrangler körs på en ml.m5.4xlarge instans. Denna instans försvinner från KÖRINSTANSER när du stänger av Data Wrangler-appen.

När du har stängt av Data Wrangler-appen måste den startas om nästa gång du öppnar en Data Wrangler-flödesfil. Detta kan ta några minuter.

Slutsats

I det här inlägget visade vi hur du kan använda anpassade transformationer i Data Wrangler. Vi använde biblioteken och ramverket i Data Wrangler-behållaren för att utöka de inbyggda datatransformeringsmöjligheterna. Exemplen i det här inlägget representerar en delmängd av de ramverk som används. Transformationerna i Data Wrangler-flödet kan nu skalas in till en pipeline för DataOps.

För att lära dig mer om hur du använder dataflöden med Data Wrangler, se Skapa och använd ett Data Wrangler-flöde och Amazon SageMaker Prissättning. För att komma igång med Data Wrangler, se Förbered ML-data med Amazon SageMaker Data Wrangler. För att lära dig mer om Autopilot och AutoML på SageMaker, besök Automatisera modellutveckling med Amazon SageMaker Autopilot.


Om författarna

Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Meenakshisundaram Thandavarayan är senior AI/ML-specialist med AWS. Han hjälper högteknologiska strategiska konton på deras AI- och ML-resa. Han brinner mycket för datadriven AI.

 Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Sovik Kumar Nath är en AI/ML-lösningsarkitekt med AWS. Han har lång erfarenhet av end-to-end-designer och lösningar för maskininlärning; affärsanalys inom finansiell, operationell och marknadsanalys; sjukvård; försörjningskedjan; och IoT. Utanför jobbet tycker Sovik om att resa och titta på film.

Skapa anpassade transformationer i Amazon SageMaker Data Wrangler med hjälp av NLTK och SciPy PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Abigail är en mjukvaruutvecklingsingenjör på Amazon SageMaker. Hon brinner för att hjälpa kunder att förbereda sin data i DataWrangler och bygga distribuerade maskininlärningssystem. På fritiden tycker Abigail om att resa, vandra, åka skidor och baka.

Tidsstämpel:

Mer från AWS maskininlärning