Ontwerpen van aangepaste transformaties in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy

Ontwerpen van aangepaste transformaties in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy

“In plaats van zich te concentreren op de code, zouden bedrijven zich moeten concentreren op het ontwikkelen van systematische engineeringpraktijken om gegevens te verbeteren op een manier die betrouwbaar, efficiënt en systematisch is. Met andere woorden, bedrijven moeten overstappen van een modelgerichte benadering naar een datagerichte benadering.” – Andrew Ng

Een datacentrische AI-benadering omvat het bouwen van AI-systemen met kwaliteitsgegevens, waarbij gegevensvoorbereiding en functie-engineering betrokken zijn. Dit kan een vervelende taak zijn waarbij het gaat om het verzamelen, ontdekken, profileren, opschonen, structureren, transformeren, verrijken, valideren en veilig opslaan van gegevens.

Amazon SageMaker-gegevens Wrangler is een dienst in Amazon SageMaker Studio dat een end-to-end oplossing biedt voor het importeren, voorbereiden, transformeren, kenmerken en analyseren van gegevens met weinig tot geen codering. U kunt een Data Wrangler-stroom voor gegevensvoorbereiding integreren in uw machine learning-workflows (ML) om de voorverwerking van gegevens en feature-engineering te vereenvoudigen, waardoor gegevensvoorbereiding sneller naar productie gaat zonder dat u PySpark-code hoeft te schrijven, Apache Spark hoeft te installeren of clusters moet opstarten.

Voor scenario's waarin u uw eigen aangepaste scripts voor gegevenstransformaties moet toevoegen, kunt u uw transformatielogica schrijven in Pandas, PySpark, PySpark SQL. Data Wrangler ondersteunt nu NLTK- en SciPy-bibliotheken voor het schrijven van aangepaste transformaties om tekstgegevens voor ML voor te bereiden en beperkingsoptimalisatie uit te voeren.

U kunt scenario's tegenkomen waarin u uw eigen aangepaste scripts voor gegevenstransformatie moet toevoegen. Met de aangepaste transformatiemogelijkheid van Data Wrangler kunt u uw transformatielogica schrijven in Pandas, PySpark, PySpark SQL.

In dit bericht bespreken we hoe u uw aangepaste transformatie in NLTK kunt schrijven om tekstgegevens voor ML voor te bereiden. We zullen ook enkele voorbeelden van aangepaste codetransformatie delen met behulp van andere veelgebruikte frameworks zoals NLTK, NumPy, SciPy en scikit-learn, evenals AWS AI Services. Voor deze oefening gebruiken we de Titanic-gegevensset, een populaire dataset in de ML-community, die nu is toegevoegd als een voorbeeldgegevensset binnen Data Wrangler.

Overzicht oplossingen

Data Wrangler biedt meer dan 40 ingebouwde connectoren voor het importeren van gegevens. Nadat de gegevens zijn geïmporteerd, kunt u uw gegevensanalyse en transformaties bouwen met behulp van meer dan 300 ingebouwde transformaties. U kunt vervolgens geïndustrialiseerde pijplijnen genereren om de functies naar toe te pushen Amazon eenvoudige opslagservice (Amazon S3) of Amazon SageMaker Feature Store. Het volgende diagram toont de end-to-end architectuur op hoog niveau.

Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Voorwaarden

Data Wrangler is een SageMaker-functie die beschikbaar is binnen Amazon SageMaker Studio. Je kunt volgen het Studio onboarding-proces om de Studio-omgeving en notebooks op gang te brengen. Hoewel u kunt kiezen uit een aantal authenticatiemethoden, is de eenvoudigste manier om een ​​Studio-domein te maken, het volgen van de Snelstartinstructies. De Snelstart gebruikt dezelfde standaardinstellingen als de standaard Studio-opstelling. U kunt er ook voor kiezen om aan boord te gaan met behulp van AWS IAM Identiteitscentrum (opvolger van AWS Single Sign-On) voor authenticatie (zie Aan boord van Amazon SageMaker Domain met IAM Identity Center).

Importeer de Titanic-gegevensset

Start uw Studio-omgeving en maak een nieuwe Data Wrangler-stroom. U kunt uw eigen dataset importeren of een voorbeelddataset (Titanic) gebruiken, zoals weergegeven in de volgende schermafbeelding. Met Data Wrangler kunt u datasets uit verschillende databronnen importeren. Voor onze use case importeren we de voorbeelddataset uit een S3-bucket.

Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Na het importeren ziet u twee knooppunten (het bronknooppunt en het gegevenstypeknooppunt) in de gegevensstroom. Data Wrangler identificeert automatisch het datatype voor alle kolommen in de dataset.

Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Transformaties op maat met NLTK

Voor gegevensvoorbereiding en functie-engineering met Data Wrangler kunt u meer dan 300 ingebouwde transformaties gebruiken of uw eigen aangepaste transformaties bouwen. Aangepaste transformaties kan worden geschreven als afzonderlijke stappen binnen Data Wrangler. Ze worden onderdeel van het .flow-bestand binnen Data Wrangler. De aangepaste transformatiefunctie ondersteunt Python, PySpark en SQL als verschillende stappen in codefragmenten. Nadat notebookbestanden (.ipynb) zijn gegenereerd op basis van het .flow-bestand of het .flow-bestand is gebruikt als recepten, blijven de aangepaste transformatiecodefragmenten behouden zonder dat er wijzigingen nodig zijn. Dit ontwerp van Data Wrangler maakt het mogelijk dat aangepaste transformaties onderdeel worden van een SageMaker Processing-taak voor het verwerken van enorme datasets met aangepaste transformaties.

Titanic-dataset heeft een aantal functies (naam en home.dest) die tekstinformatie bevatten. We gebruiken NLTK om de naamkolom te splitsen en de achternaam te extraheren, en de frequentie van achternamen af ​​te drukken. NLTK is een toonaangevend platform voor het bouwen van Python-programma's om met menselijke taalgegevens te werken. Het biedt gebruiksvriendelijke interfaces voor meer dan 50 corpora en lexicale middelen zoals WordNet, samen met een reeks tekstverwerkingsbibliotheken voor classificatie, tokenisatie, staming, tagging, parsing en semantisch redeneren, en wrappers voor industriële bibliotheken voor natuurlijke taalverwerking (NLP).

Voer de volgende stappen uit om een ​​nieuwe transformatie toe te voegen:

  1. Kies het plusteken en kies Voeg Transform toe.
  2. Kies Stap toevoegen En kies Aangepaste transformatie.

U kunt een aangepaste transformatie maken met behulp van Panda's, PySpark, door de gebruiker gedefinieerde Python-functies en SQL PySpark.

Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

  1. Kies Python (panda's) en voeg de volgende code toe om de achternaam uit de naamkolom te extraheren:
    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. Kies Voorbeschouwing om de resultaten te bekijken.

De volgende schermafbeelding toont de last_name kolom geëxtraheerd.

Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

  1. Voeg nog een aangepaste transformatiestap toe om de frequentieverdeling van de achternamen te identificeren, met behulp van de volgende code:
    import nltk
    fd = nltk.FreqDist(df["last_name"])
    print(fd.most_common(10))

  2. Kies Voorbeschouwing om de resultaten van de frequentie te bekijken.Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Transformaties op maat met AWS AI-services

AWS vooraf getrainde AI-services bieden kant-en-klare intelligentie voor uw applicaties en workflows. AWS AI-services kunnen eenvoudig worden geïntegreerd met uw applicaties om veelvoorkomende use-cases aan te pakken. U kunt nu de mogelijkheden voor AWS AI-services gebruiken als een aangepaste transformatiestap in Data Wrangler.

Amazon begrijpt het gebruikt NLP om inzichten te verkrijgen over de inhoud van documenten. Het ontwikkelt inzichten door de entiteiten, sleutelzinnen, taal, sentimenten en andere gemeenschappelijke elementen in een document te herkennen.

We gebruiken Amazon Comprehend om de entiteiten uit de naamkolom te halen. Voer de volgende stappen uit:

  1. Voeg een aangepaste transformatiestap toe.
  2. Kies Python (panda's).
  3. Voer de volgende code in om de entiteiten te extraheren:
    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. Kies Voorbeschouwing en visualiseer de resultaten.

Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

We hebben nu drie aangepaste transformaties toegevoegd in Data Wrangler.

  1. Kies Informatiestroom om de end-to-end datastroom te visualiseren.

Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Aangepaste transformaties met NumPy en SciPy

NumPy is een open-sourcebibliotheek voor Python met uitgebreide wiskundige functies, generatoren van willekeurige getallen, lineaire algebra-routines, Fourier-transformaties en meer. scipy is een open-source Python-bibliotheek die wordt gebruikt voor wetenschappelijk computergebruik en technisch computergebruik, met modules voor optimalisatie, lineaire algebra, integratie, interpolatie, speciale functies, snelle Fourier-transformatie (FFT), signaal- en beeldverwerking, oplossers en meer.

Met aangepaste transformaties van Data Wrangler kunt u Python, PySpark en SQL als verschillende stappen combineren. In de volgende Data Wrangler-flow worden verschillende functies van Python-pakketten, NumPy en SciPy in meerdere stappen toegepast op de Titanic-dataset.

Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

NumPy-transformaties

De tariefkolom van de Titanic-dataset bevat instaptarieven van verschillende passagiers. Het histogram van de tariefkolom laat een uniforme verdeling zien, behalve de laatste bak. Door NumPy-transformaties toe te passen, zoals log of vierkantswortel, kunnen we de verdeling wijzigen (zoals weergegeven door de vierkantsworteltransformatie).

Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai. Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Zie de volgende code:

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

SciPy-functies zoals z-score worden toegepast als onderdeel van de aangepaste transformatie om tariefverdeling te standaardiseren met gemiddelde en standaarddeviatie.

Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Zie de volgende code:

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

Beperkingsoptimalisatie met NumPy en SciPy

Data Wrangler-transformaties op maat kunnen geavanceerde transformaties aan, zoals beperkingsoptimalisatie, het toepassen van SciPy-optimalisatiefuncties en het combineren van SciPy met NumPy. In het volgende voorbeeld laat het tarief als functie van leeftijd geen waarneembare trend zien. Beperkingsoptimalisatie kan het tarief echter transformeren als een functie van leeftijd. De randvoorwaarde is in dit geval dat het nieuwe totaaltarief gelijk blijft aan het oude totaaltarief. Met aangepaste transformaties van Data Wrangler kunt u de SciPy-optimalisatiefunctie uitvoeren om de optimale coëfficiënt te bepalen die het tarief kan transformeren als een functie van leeftijd onder beperkte omstandigheden.

Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai. Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Optimalisatiedefinitie, objectieve definitie en meerdere beperkingen kunnen worden genoemd als verschillende functies bij het formuleren van beperkingsoptimalisatie in een aangepaste Data Wrangler-transformatie met behulp van SciPy en NumPy. Aangepaste transformaties kunnen ook verschillende oplossermethoden opleveren die beschikbaar zijn als onderdeel van het SciPy-optimalisatiepakket. Een nieuwe getransformeerde variabele kan worden gegenereerd door de optimale coëfficiënt te vermenigvuldigen met de oorspronkelijke kolom en op te tellen bij bestaande kolommen van Data Wrangler. Zie de volgende code:

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

De aangepaste transformatiefunctie van Data Wrangler heeft de UI-mogelijkheid om de resultaten van SciPy-optimalisatiefuncties weer te geven, zoals de waarde van de optimale coëfficiënt (of meerdere coëfficiënten).

Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Aangepaste transformaties met scikit-learn

scikit-leren is een Python-module voor machine learning die bovenop SciPy is gebouwd. Het is een open-source ML-bibliotheek die begeleid en onbewaakt leren ondersteunt. Het biedt ook verschillende hulpmiddelen voor modelaanpassing, gegevensvoorverwerking, modelselectie, modelevaluatie en vele andere hulpprogramma's.

discretisatie

discretisatie (ook wel bekend als kwantisering or weggooien) biedt een manier om doorlopende kenmerken te verdelen in discrete waarden. Bepaalde datasets met continue kenmerken kunnen profiteren van discretisatie, omdat discretisatie de dataset van continue attributen kan transformeren naar een dataset met alleen nominale attributen. One-hot gecodeerde gediscretiseerde functies kunnen een model expressiever maken, terwijl de interpreteerbaarheid behouden blijft. Voorbewerking met een discretizer kan bijvoorbeeld niet-lineariteit introduceren in lineaire modellen.

In de volgende code gebruiken we KBinsDiscretizer om de leeftijdskolom in 10 bakken te verdelen:

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

U kunt de bakranden zien die zijn afgedrukt in de volgende schermafbeelding.

Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

One-hot codering

Waarden in de kolommen Ingescheept zijn categorische waarden. Daarom moeten we deze strings weergeven als numerieke waarden om onze classificatie met ons model uit te voeren. We zouden dit ook kunnen doen met een one-hot coderingstransformatie.

Er zijn drie waarden voor Embarked: S, C en Q. We vertegenwoordigen deze met getallen. Zie de volgende code:

# 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

Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Opruimen

Als u Data Wrangler niet gebruikt, is het belangrijk om de instantie waarop het wordt uitgevoerd af te sluiten om extra kosten te voorkomen.

Data Wrangler slaat uw gegevensstroom automatisch elke 60 seconden op. Om te voorkomen dat u werk kwijtraakt, slaat u uw gegevensstroom op voordat u Data Wrangler afsluit.

  1. Om uw gegevensstroom in Studio op te slaan, kiest u Dien in, kies dan Gegevens Wrangler-stroom opslaan.
  2. Om de Data Wrangler-instantie af te sluiten, kiest u in Studio: Instanties en kernels uitvoeren.
  3. Onder ACTIEVE APPS, kies het afsluitpictogram naast de app sagemaker-data-wrangler-1.0.
  4. Kies Alles afsluiten bevestigen.

Data Wrangler draait op een ml.m5.4xlarge instantie. Deze instantie verdwijnt uit LOPENDE INSTANTIES wanneer u de Data Wrangler-app afsluit.

Nadat u de Data Wrangler-app hebt afgesloten, moet deze opnieuw worden opgestart de volgende keer dat u een Data Wrangler-stroombestand opent. Dit kan enkele minuten duren.

Conclusie

In dit bericht hebben we laten zien hoe u aangepaste transformaties kunt gebruiken in Data Wrangler. We hebben de bibliotheken en het framework binnen de Data Wrangler-container gebruikt om de ingebouwde mogelijkheden voor gegevenstransformatie uit te breiden. De voorbeelden in dit bericht vertegenwoordigen een subset van de gebruikte frameworks. De transformaties in de Data Wrangler-stroom kunnen nu worden ingeschaald naar een pijplijn voor DataOps.

Raadpleeg voor meer informatie over het gebruik van gegevensstromen met Data Wrangler: Een Data Wrangler-stroom maken en gebruiken en Amazon SageMaker-prijzen. Om aan de slag te gaan met Data Wrangler, zie Bereid ML-gegevens voor met Amazon SageMaker Data Wrangler. Ga voor meer informatie over Autopilot en AutoML op SageMaker naar Automatiseer modelontwikkeling met Amazon SageMaker Autopilot.


Over de auteurs

Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Meenakshisundaram Thandavarayan is een Senior AI/ML-specialist bij AWS. Hij helpt hi-tech strategische accounts op hun AI- en ML-reis. Hij heeft een grote passie voor datagedreven AI.

 Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Sovik Kumar Nath is een AI/ML-oplossingsarchitect met AWS. Hij heeft uitgebreide ervaring met end-to-end ontwerpen en oplossingen voor machine learning; bedrijfsanalyses binnen financiële, operationele en marketinganalyses; gezondheidszorg; bevoorradingsketen; en het internet der dingen. Buiten het werk houdt Sovik van reizen en films kijken.

Aangepaste transformaties schrijven in Amazon SageMaker Data Wrangler met behulp van NLTK en SciPy PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Abigail is een Software Development Engineer bij Amazon SageMaker. Ze is gepassioneerd door het helpen van klanten bij het voorbereiden van hun gegevens in DataWrangler en het bouwen van gedistribueerde machine learning-systemen. In haar vrije tijd houdt Abigail van reizen, wandelen, skiën en bakken.

Tijdstempel:

Meer van AWS-machine learning