Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy

Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy

„Zamiast skupiać się na kodzie, firmy powinny skupić się na opracowywaniu systematycznych praktyk inżynieryjnych w celu ulepszania danych w sposób niezawodny, wydajny i systematyczny. Innymi słowy, firmy muszą przejść od podejścia skoncentrowanego na modelu do podejścia skoncentrowanego na danych”. – Andrzej Ng

Podejście oparte na sztucznej inteligencji oparte na danych obejmuje budowanie systemów sztucznej inteligencji z wysokiej jakości danymi obejmującymi przygotowanie danych i inżynierię funkcji. Może to być żmudne zadanie obejmujące gromadzenie danych, wykrywanie, profilowanie, oczyszczanie, strukturyzację, przekształcanie, wzbogacanie, sprawdzanie poprawności i bezpieczne przechowywanie danych.

Pogromca danych Amazon SageMaker jest usługą w Studio Amazon SageMaker który zapewnia kompleksowe rozwiązanie do importowania, przygotowywania, przekształcania, udostępniania i analizowania danych przy niewielkim lub zerowym kodowaniu. Możesz zintegrować przepływ przygotowania danych Data Wrangler z przepływami pracy uczenia maszynowego (ML), aby uprościć wstępne przetwarzanie danych i inżynierię funkcji, szybciej przygotowując dane do produkcji bez konieczności tworzenia kodu PySpark, instalowania Apache Spark lub uruchamiania klastrów.

W przypadku scenariuszy, w których musisz dodać własne niestandardowe skrypty do transformacji danych, możesz napisać logikę transformacji w Pandas, PySpark, PySpark SQL. Data Wrangler obsługuje teraz biblioteki NLTK i SciPy do tworzenia niestandardowych transformacji w celu przygotowania danych tekstowych do uczenia maszynowego i przeprowadzania optymalizacji ograniczeń.

Możesz napotkać scenariusze, w których musisz dodać własne niestandardowe skrypty do transformacji danych. Dzięki funkcji niestandardowej transformacji Data Wrangler możesz napisać logikę transformacji w Pandas, PySpark, PySpark SQL.

W tym poście omawiamy, jak napisać niestandardową transformację w NLTK, aby przygotować dane tekstowe dla ML. Udostępnimy również kilka przykładów niestandardowej transformacji kodu przy użyciu innych popularnych platform, takich jak NLTK, NumPy, SciPy i scikit-learn, a także AWS AI Services. Na potrzeby tego ćwiczenia używamy tzw Zbiór danych Titanica, popularny zestaw danych w społeczności ML, który został teraz dodany jako przykładowy zbiór danych w ramach Data Wranglera.

Omówienie rozwiązania

Data Wrangler zapewnia ponad 40 wbudowanych konektorów do importowania danych. Po zaimportowaniu danych możesz zbudować analizę danych i przekształcenia, korzystając z ponad 300 wbudowanych przekształceń. Następnie można wygenerować uprzemysłowione potoki, aby przekazać funkcje Usługa Amazon Simple Storage (Amazonka S3) lub Sklep funkcji Amazon SageMaker. Poniższy diagram przedstawia kompleksową architekturę wysokiego poziomu.

Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Wymagania wstępne

Data Wrangler to funkcja dostępna w SageMaker Studio Amazon SageMaker. Możesz śledzić proces dołączania do Studio aby rozkręcić środowisko Studio i notebooki. Chociaż możesz wybrać jedną z kilku metod uwierzytelniania, najprostszym sposobem na utworzenie domeny Studio jest skorzystanie z Instrukcje szybkiego startu. Szybki start używa tych samych ustawień domyślnych, co standardowa konfiguracja programu Studio. Możesz także wybrać opcję dołączania za pomocą Centrum tożsamości AWS IAM (następca AWS Single Sign-On) w celu uwierzytelnienia (patrz Włączenie do domeny Amazon SageMaker za pomocą IAM Identity Center).

Zaimportuj zestaw danych Titanica

Uruchom środowisko Studio i utwórz nowe Przepływ danych Wranglera. Możesz zaimportować własny zestaw danych lub użyć przykładowego zestawu danych (Titanic), jak pokazano na poniższym zrzucie ekranu. Data Wrangler umożliwia importowanie zestawów danych z różnych źródeł danych. W naszym przypadku użycia importujemy przykładowy zestaw danych z zasobnika S3.

Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Po zaimportowaniu w przepływie danych będą widoczne dwa węzły (węzeł źródłowy i węzeł typu danych). Data Wrangler automatycznie identyfikuje typ danych dla wszystkich kolumn w zbiorze danych.

Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Niestandardowe transformacje za pomocą NLTK

Do przygotowania danych i inżynierii funkcji za pomocą Data Wrangler możesz użyć ponad 300 wbudowanych transformacji lub zbudować własne niestandardowe transformacje. Niestandardowe transformacje można zapisać jako osobne kroki w Data Wrangler. Stają się częścią pliku .flow w Data Wrangler. Funkcja transformacji niestandardowej obsługuje języki Python, PySpark i SQL jako różne kroki we fragmentach kodu. Po wygenerowaniu plików notesu (.ipynb) z pliku .flow lub gdy plik .flow jest używany jako przepisy, niestandardowe fragmenty kodu transformacji są zachowywane bez konieczności wprowadzania jakichkolwiek zmian. Ten projekt Data Wrangler pozwala niestandardowym transformacjom stać się częścią zadania SageMaker Processing w celu przetwarzania ogromnych zestawów danych z niestandardowymi transformacjami.

Zbiór danych Titanica ma kilka funkcji (nazwa i home.dest), które zawierają informacje tekstowe. Używamy NLTK aby podzielić kolumnę nazwiska i wyodrębnić nazwisko oraz wydrukować częstotliwość występowania nazwisk. NLTK to wiodąca platforma do tworzenia programów w języku Python do pracy z danymi w języku ludzkim. Zapewnia łatwe w użyciu interfejsy do ponad 50 korpusów i zasobów leksykalnych takich jak WordNet, wraz z zestawem bibliotek przetwarzania tekstu do klasyfikacji, tokenizacji, stemmingu, tagowania, parsowania i wnioskowania semantycznego oraz opakowań dla przemysłowych bibliotek przetwarzania języka naturalnego (NLP).

Aby dodać nową transformację, wykonaj następujące kroki:

  1. Wybierz znak plus i wybierz Dodaj transformację.
  2. Dodaj Dodaj krok i wybierz Niestandardowa transformacja.

Możesz utworzyć niestandardową transformację za pomocą Pandas, PySpark, funkcji zdefiniowanych przez użytkownika w języku Python i SQL PySpark.

Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

  1. Dodaj Python (pandy) i dodaj następujący kod, aby wyodrębnić nazwisko z kolumny nazwy:
    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. Dodaj Podgląd aby przejrzeć wyniki.

Poniższy zrzut ekranu pokazuje last_name kolumna wyciągnięta.

Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

  1. Dodaj kolejny niestandardowy krok przekształcania, aby zidentyfikować rozkład częstotliwości nazwisk, używając następującego kodu:
    import nltk
    fd = nltk.FreqDist(df["last_name"])
    print(fd.most_common(10))

  2. Dodaj Podgląd aby przejrzeć wyniki częstotliwości.Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Niestandardowe transformacje za pomocą usług AWS AI

Wstępnie wyszkolone usługi sztucznej inteligencji AWS zapewniają gotową inteligencję dla Twoich aplikacji i przepływów pracy. Usługi AWS AI łatwo integrują się z Twoimi aplikacjami, aby rozwiązać wiele typowych przypadków użycia. Możesz teraz używać możliwości usług AWS AI jako niestandardowego kroku transformacji w Data Wrangler.

Amazon Comprehend wykorzystuje NLP do wydobywania spostrzeżeń na temat treści dokumentów. Rozwija spostrzeżenia, rozpoznając jednostki, frazy kluczowe, język, nastroje i inne wspólne elementy w dokumencie.

Używamy Amazon Comprehend, aby wyodrębnić jednostki z kolumny nazwy. Wykonaj następujące kroki:

  1. Dodaj niestandardowy krok transformacji.
  2. Dodaj Python (pandy).
  3. Wprowadź następujący kod, aby wyodrębnić jednostki:
    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. Dodaj Podgląd i wizualizować wyniki.

Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Dodaliśmy teraz trzy niestandardowe transformacje w Data Wrangler.

  1. Dodaj Przepływ danych do wizualizacji przepływu danych od końca do końca.

Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Niestandardowe transformacje za pomocą NumPy i SciPy

numpy to biblioteka typu open source dla języka Python, oferująca wszechstronne funkcje matematyczne, generatory liczb losowych, procedury algebry liniowej, transformaty Fouriera i wiele innych. SciPy to biblioteka Python typu open source używana do obliczeń naukowych i technicznych, zawierająca moduły do ​​optymalizacji, algebry liniowej, integracji, interpolacji, funkcji specjalnych, szybkiej transformaty Fouriera (FFT), przetwarzania sygnałów i obrazów, solwerów i innych.

Niestandardowe transformacje Data Wrangler umożliwiają łączenie Pythona, PySpark i SQL jako różnych kroków. W poniższym przepływie narzędzia Data Wrangler różne funkcje z pakietów Python, NumPy i SciPy są stosowane w zestawie danych Titanica w wielu krokach.

Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Transformacje NumPy

Kolumna opłat w zbiorze danych Titanica zawiera opłaty za wejście na pokład różnych pasażerów. Histogram kolumny taryfy przedstawia rozkład równomierny, z wyjątkiem ostatniego przedziału. Stosując transformacje NumPy, takie jak logarytm lub pierwiastek kwadratowy, możemy zmienić rozkład (jak pokazuje transformacja pierwiastkowa).

Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI. Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Zobacz następujący 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"])

Transformacje SciPy

Funkcje SciPy, takie jak z-score, są stosowane jako część niestandardowej transformacji w celu standaryzacji rozkładu taryf ze średnią i odchyleniem standardowym.

Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Zobacz następujący kod:

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

Optymalizacja ograniczeń za pomocą NumPy i SciPy

Niestandardowe transformacje Data Wrangler mogą obsługiwać zaawansowane transformacje, takie jak optymalizacja ograniczeń, stosowanie funkcji optymalizacji SciPy i łączenie SciPy z NumPy. W poniższym przykładzie taryfa jako funkcja wieku nie wykazuje żadnego zauważalnego trendu. Jednak optymalizacja ograniczeń może przekształcić taryfę jako funkcję wieku. Warunek ograniczający w tym przypadku jest taki, że nowa taryfa łączna pozostaje taka sama jak stara opłata łączna. Niestandardowe transformacje Data Wrangler umożliwiają uruchomienie funkcji optymalizacji SciPy w celu określenia optymalnego współczynnika, który może przekształcić taryfę jako funkcję wieku w warunkach ograniczeń.

Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI. Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Definicję optymalizacji, definicję celu i wiele ograniczeń można wymienić jako różne funkcje podczas formułowania optymalizacji ograniczeń w niestandardowej transformacji Data Wrangler przy użyciu SciPy i NumPy. Niestandardowe transformacje mogą również zapewniać różne metody rozwiązywania problemów, które są dostępne w ramach pakietu optymalizacji SciPy. Nową przekształconą zmienną można wygenerować mnożąc optymalny współczynnik z oryginalną kolumną i dodać do istniejących kolumn Data Wranglera. Zobacz następujący 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"]

Funkcja niestandardowej transformacji Data Wrangler ma interfejs użytkownika umożliwiający wyświetlanie wyników funkcji optymalizacji SciPy, takich jak wartość optymalnego współczynnika (lub wielu współczynników).

Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Niestandardowe przekształcenia za pomocą scikit-learn

nauka-scikit to moduł Pythona do uczenia maszynowego zbudowany na bazie SciPy. Jest to biblioteka ML typu open source, która obsługuje uczenie nadzorowane i nienadzorowane. Zapewnia również różne narzędzia do dopasowywania modeli, wstępnego przetwarzania danych, wyboru modeli, oceny modeli i wiele innych narzędzi.

Dyskretyzacja

Dyskretyzacja (inaczej znany jako kwantyzacja or binowanie) umożliwia podział cech ciągłych na wartości dyskretne. Niektóre zestawy danych z cechami ciągłymi mogą odnieść korzyści z dyskretyzacji, ponieważ dyskretyzacja może przekształcić zbiór danych o atrybutach ciągłych w zbiór zawierający tylko atrybuty nominalne. Dyskretyzowane funkcje zakodowane na gorąco mogą sprawić, że model będzie bardziej wyrazisty, przy jednoczesnym zachowaniu możliwości interpretacji. Na przykład wstępne przetwarzanie za pomocą dyskretyzatora może wprowadzić nieliniowość do modeli liniowych.

W poniższym kodzie używamy KBinsDiscretizer aby zdyskretyzować kolumnę wieku na 10 pojemników:

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

Możesz zobaczyć wydrukowane krawędzie pojemnika na poniższym zrzucie ekranu.

Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Kodowanie na gorąco

Wartości w kolumnach Zaokrętowany są wartościami kategorialnymi. Dlatego musimy reprezentować te ciągi jako wartości liczbowe, aby przeprowadzić naszą klasyfikację za pomocą naszego modelu. Możemy to również zrobić za pomocą jednej transformacji kodowania na gorąco.

Zaokrętowany ma trzy wartości: S, C i Q. Reprezentujemy je za pomocą liczb. Zobacz następujący 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

Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Sprzątać

Gdy nie korzystasz z aplikacji Data Wrangler, ważne jest, aby zamknąć instancję, na której działa, aby uniknąć ponoszenia dodatkowych opłat.

Data Wrangler automatycznie zapisuje przepływ danych co 60 sekund. Aby uniknąć utraty pracy, zapisz przepływ danych przed wyłączeniem narzędzia Data Wrangler.

  1. Aby zapisać przepływ danych w Studio, wybierz filet, A następnie wybierz Zapisz przepływ danych Wranglera.
  2. Aby zamknąć instancję Data Wrangler, w Studio wybierz Uruchomione instancje i jądra.
  3. Pod DZIAŁAJĄCE APLIKACJE, wybierz ikonę zamknięcia obok aplikacji sagemaker-data-wrangler-1.0.
  4. Dodaj Wyłącz wszystko potwierdzać.

Data Wrangler działa na instancji ml.m5.4xlarge. Ta instancja znika z URUCHOMIONE INSTANCJE po zamknięciu aplikacji Data Wrangler.

Po zamknięciu aplikacji Data Wrangler musi ona zostać ponownie uruchomiona przy następnym otwarciu pliku przepływu Data Wrangler. Może to potrwać kilka minut.

Wnioski

W tym poście pokazaliśmy, jak możesz wykorzystać niestandardowe transformacje w Data Wrangler. Wykorzystaliśmy biblioteki i framework w kontenerze Data Wrangler, aby rozszerzyć wbudowane możliwości transformacji danych. Przykłady w tym poście reprezentują podzbiór używanych ram. Transformacje w przepływie Data Wrangler można teraz skalować do potoku dla DataOps.

Aby dowiedzieć się więcej o korzystaniu z przepływów danych w Data Wrangler, zobacz Twórz i używaj przepływu danych Wrangler i Cennik Amazon SageMaker. Aby rozpocząć korzystanie z Data Wranglera, zobacz Przygotuj dane ML za pomocą Amazon SageMaker Data Wrangler. Aby dowiedzieć się więcej o Autopilocie i AutoML w SageMaker, odwiedź Zautomatyzuj tworzenie modeli za pomocą Amazon SageMaker Autopilot.


O autorach

Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Meenakshisundaram Tandavarayan jest starszym specjalistą AI/ML z AWS. Pomaga zaawansowanym technologicznie klientom strategicznym w ich podróży związanej z AI i ML. Jego pasją jest sztuczna inteligencja oparta na danych.

 Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Sovik Kumar Nath jest architektem rozwiązań AI/ML w AWS. Posiada bogate doświadczenie w kompleksowych projektach i rozwiązaniach dla uczenia maszynowego; analityka biznesowa w zakresie analityki finansowej, operacyjnej i marketingowej; opieka zdrowotna; łańcuch dostaw; i IoT. Poza pracą Sovik lubi podróżować i oglądać filmy.

Tworzenie niestandardowych transformacji w Amazon SageMaker Data Wrangler przy użyciu NLTK i SciPy PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Abigail jest inżynierem rozwoju oprogramowania w Amazon SageMaker. Pasjonuje się pomaganiem klientom w przygotowaniu ich danych w DataWrangler oraz budowaniu rozproszonych systemów uczenia maszynowego. W wolnym czasie Abigail lubi podróżować, wędrować, jeździć na nartach i piec.

Znak czasu:

Więcej z Uczenie maszynowe AWS