Egyéni átalakítások létrehozása az Amazon SageMaker Data Wranglerben az NLTK és a SciPy segítségével

Egyéni átalakítások létrehozása az Amazon SageMaker Data Wranglerben az NLTK és a SciPy segítségével

„A kódra való összpontosítás helyett a vállalatoknak szisztematikus mérnöki gyakorlatok kidolgozására kell összpontosítaniuk az adatok megbízható, hatékony és szisztematikus javítására. Más szavakkal, a vállalatoknak át kell térniük a modellközpontú megközelítésről az adatközpontú megközelítésre.” – Andrew Ng

Az adatközpontú mesterségesintelligencia-megközelítés magában foglalja az AI-rendszerek minőségi adatokkal való felépítését, beleértve az adatok előkészítését és a funkciók tervezését. Ez fárasztó feladat lehet, amely magában foglalja az adatok gyűjtését, feltárását, profilalkotását, tisztítását, strukturálását, átalakítását, gazdagítását, érvényesítését és biztonságos tárolását.

Amazon SageMaker Data Wrangler egy szolgáltatás Amazon SageMaker Studio amely teljes körű megoldást kínál az adatok importálására, előkészítésére, átalakítására, jellemzőire és elemzésére, kis vagy kódolás nélkül. Integrálhat egy Data Wrangler adat-előkészítési folyamatot a gépi tanulási (ML) munkafolyamataiba, hogy leegyszerűsítse az adatok előfeldolgozását és a funkciótervezést, és gyorsabban vigye át az adat-előkészítést a termelésbe anélkül, hogy PySpark kódot kellene létrehoznia, Apache Sparkot telepítenie vagy fürtöket kellene felállítania.

Azokban a forgatókönyvekben, ahol saját egyéni szkripteket kell hozzáadnia az adatátalakításokhoz, megírhatja az átalakítási logikát a Pandas, PySpark vagy PySpark SQL-ben. A Data Wrangler mostantól támogatja az NLTK- és SciPy-könyvtárakat az egyéni átalakítások létrehozásához, hogy szöveges adatokat készítsen elő az ML-hez, és végrehajtsa a kényszeroptimalizálást.

Előfordulhat, hogy olyan forgatókönyvekbe ütközhet, amikor saját egyéni szkripteket kell hozzáadnia az adatátalakításhoz. A Data Wrangler egyéni átalakítási képességével megírhatja átalakítási logikáját Pandas, PySpark, PySpark SQL-ben.

Ebben a bejegyzésben megvitatjuk, hogyan írhatja meg egyéni átalakításait NLTK-ban, hogy szöveges adatokat készítsen az ML-hez. Néhány példa egyéni kódátalakításra is megosztunk más általános keretrendszerek, például NLTK, NumPy, SciPy és scikit-learn, valamint AWS AI-szolgáltatások használatával. Ennek a gyakorlatnak a céljára a Titanic adatkészlet, egy népszerű adatkészlet az ML közösségben, amely most a minta adatkészlet a Data Wrangleren belül.

Megoldás áttekintése

A Data Wrangler több mint 40 beépített csatlakozót biztosít az adatok importálásához. Az adatok importálása után több mint 300 beépített átalakítás segítségével építheti fel adatelemzéseit és átalakításait. Ezután iparosított csővezetékeket generálhat a szolgáltatások áthelyezéséhez Amazon egyszerű tárolási szolgáltatás (Amazon S3) ill Amazon SageMaker Feature Store. A következő diagram a végpontok közötti magas szintű architektúrát mutatja be.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Előfeltételek

A Data Wrangler egy SageMaker-funkció, amely elérhető benne Amazon SageMaker Studio. Követheted a Stúdió belépési folyamata hogy felpörgesse a Studio környezetet és a notebookokat. Bár számos hitelesítési mód közül választhat, a Studio tartomány létrehozásának legegyszerűbb módja a Gyors útmutató. A Gyorsindítás ugyanazokat az alapértelmezett beállításokat használja, mint a standard Studio-beállítás. Választhat a fedélzeti használat mellett is AWS IAM Identity Center (az AWS Single Sign-On utódja) a hitelesítéshez (lásd Bekapcsolva az Amazon SageMaker tartományba az IAM Identity Center használatával).

Importálja a Titanic adatkészletet

Indítsa el a Studio környezetet, és hozzon létre egy újat Data Wrangler áramlás. Importálhatja saját adatkészletét, vagy használhat egy mintaadatkészletet (Titanic) a következő képernyőképen látható módon. A Data Wrangler lehetővé teszi adatkészletek importálását különböző adatforrásokból. Használati esetünkben a mintaadatkészletet egy S3 tárolóból importáljuk.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Az importálás után két csomópontot (a forráscsomópontot és az adattípus csomópontot) fog látni az adatfolyamban. A Data Wrangler automatikusan azonosítja az adathalmaz összes oszlopának adattípusát.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Egyedi átalakítások NLTK-val

Az adatok előkészítéséhez és a Data Wrangler szolgáltatástervezéséhez több mint 300 beépített átalakítást használhat, vagy saját egyéni átalakításokat készíthet. Egyedi átalakítások külön lépésként írható a Data Wrangleren belül. A Data Wrangler .flow fájljának részévé válnak. Az egyéni átalakítási funkció támogatja a Python, a PySpark és az SQL-t a kódrészletek különböző lépéseiként. Miután a jegyzetfüzetfájlok (.ipynb) létrejöttek a .flow fájlból, vagy a .flow fájlt receptként használták fel, az egyéni átalakítási kódrészletek változtatás nélkül megmaradnak. A Data Wrangler ezen kialakítása lehetővé teszi, hogy az egyéni átalakítások egy SageMaker feldolgozási feladat részévé váljanak, hogy hatalmas adatkészleteket dolgozzanak fel egyéni átalakításokkal.

A Titanic adatkészletnek van néhány olyan funkciója (név és home.dest), amelyek szöveges információkat tartalmaznak. Használjuk NLTK a név oszlop felosztásához és a vezetéknév kibontásához, valamint a vezetéknevek gyakoriságának kinyomtatásához. Az NLTK a Python-programok emberi nyelvi adatokkal való együttműködésének egyik vezető platformja. Könnyen használható felületeket biztosít több mint 50 korpusz és lexikai forrás Ilyen például a WordNet, valamint egy sor szövegfeldolgozó könyvtár az osztályozáshoz, tokenizáláshoz, törzsképzéshez, címkézéshez, elemzéshez és szemantikai érveléshez, valamint az iparilag erős természetes nyelvi feldolgozó (NLP) könyvtárak burkolóihoz.

Új átalakítás hozzáadásához hajtsa végre a következő lépéseket:

  1. Válassza ki a plusz jelet, és válassza ki Adja hozzá az átalakítást.
  2. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Add hozzá a lépést És válasszon Egyedi átalakítás.

Egyéni átalakítást hozhat létre a Pandas, a PySpark, a Python felhasználó által definiált függvényei és az SQL PySpark használatával.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

  1. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Python (pandák) és adja hozzá a következő kódot a vezetéknév kivonásához a név oszlopból:
    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. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Preview az eredmények áttekintésére.

A következő képernyőképen látható a last_name oszlop kivont.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

  1. Adjon hozzá egy másik egyéni átalakítási lépést a vezetéknevek gyakorisági eloszlásának azonosításához a következő kód használatával:
    import nltk
    fd = nltk.FreqDist(df["last_name"])
    print(fd.most_common(10))

  2. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Preview a frekvencia eredményeinek áttekintésére.Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Egyedi átalakítások AWS AI szolgáltatásokkal

Az AWS előre kiképzett AI-szolgáltatásai kész intelligenciát biztosítanak alkalmazásaihoz és munkafolyamataihoz. Az AWS AI-szolgáltatások könnyen integrálhatók az alkalmazásaiba, így számos gyakori használati esetet kezelnek. Mostantól az AWS AI-szolgáltatások képességeit egyéni átalakítási lépésként használhatja a Data Wranglerben.

Amazon Comprehend az NLP-t használja, hogy betekintést nyerjen a dokumentumok tartalmába. Betekintést fejleszt a dokumentum entitásainak, kulcskifejezéseinek, nyelvezetének, érzéseinek és egyéb gyakori elemeinek felismerésével.

Az Amazon Comprehend segítségével kinyerjük az entitásokat a név oszlopból. Hajtsa végre a következő lépéseket:

  1. Adjon hozzá egy egyéni átalakítási lépést.
  2. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Python (pandák).
  3. Írja be a következő kódot az entitások kibontásához:
    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. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Preview és vizualizálja az eredményeket.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Három egyéni átalakítást adtunk hozzá a Data Wranglerben.

  1. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Adatáramlás a végpontok közötti adatfolyam megjelenítéséhez.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Egyedi átalakítások NumPy és SciPy segítségével

numpy egy nyílt forráskódú Python könyvtár, amely átfogó matematikai függvényeket, véletlenszám-generátorokat, lineáris algebrai rutinokat, Fourier-transzformációkat és még sok mást kínál. SciPy egy nyílt forráskódú Python könyvtár, amelyet tudományos számításokhoz és műszaki számításokhoz használnak, és modulokat tartalmaz optimalizáláshoz, lineáris algebrához, integrációhoz, interpolációhoz, speciális függvényekhez, gyors Fourier-transzformációhoz (FFT), jel- és képfeldolgozáshoz, megoldókhoz stb.

A Data Wrangler egyéni átalakításai lehetővé teszik a Python, a PySpark és az SQL kombinálását különböző lépésekként. A következő Data Wrangler-folyamatban a Python-csomagok, a NumPy és a SciPy különböző függvényei több lépésben kerülnek alkalmazásra a Titanic-adatkészleten.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

NumPy transzformációk

A Titanic adatkészlet viteldíj oszlopa különböző utasok beszállási díjait tartalmazza. A viteldíj oszlop hisztogramja egyenletes eloszlást mutat, kivéve az utolsó ládát. NumPy transzformációk, például log vagy négyzetgyök alkalmazásával megváltoztathatjuk az eloszlást (ahogy a négyzetgyök transzformáció mutatja).

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai. Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Lásd a következő kódot:

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 transzformációk

A SciPy-függvényeket, például a z-score-t az egyéni átalakítás részeként alkalmazzák a viteldíjeloszlás szabványosítására az átlaggal és a szórással.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Lásd a következő kódot:

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

Kényszeroptimalizálás NumPy és SciPy segítségével

A Data Wrangler egyéni transzformációi képesek kezelni olyan fejlett átalakításokat, mint a kényszeroptimalizálás a SciPy optimalizálási függvények alkalmazásával, valamint a SciPy és a NumPy kombinálása. A következő példában a viteldíj az életkor függvényében nem mutat megfigyelhető trendet. A megszorítások optimalizálása azonban megváltoztathatja a viteldíjat az életkor függvényében. A kényszerfeltétel ebben az esetben az, hogy az új teljes viteldíj ugyanaz maradjon, mint a régi teljes viteldíj. A Data Wrangler egyéni transzformációi lehetővé teszik a SciPy optimalizálási funkciójának futtatását, hogy meghatározza az optimális együtthatót, amely a viteldíjat az életkor függvényében, korlátozott feltételek mellett tudja átalakítani.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai. Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Az optimalizálási definíció, az objektív definíció és a többszörös megszorítások különböző függvényekként említhetők, miközben a kényszeroptimalizálást egy Data Wrangler egyéni transzformációban SciPy és NumPy használatával fogalmazzák meg. Az egyéni átalakítások különböző megoldási módszereket is hozhatnak, amelyek a SciPy optimalizálási csomag részeként állnak rendelkezésre. Új transzformált változó generálható úgy, hogy az optimális együtthatót megszorozzuk az eredeti oszloppal, és hozzáadjuk a Data Wrangler meglévő oszlopaihoz. Lásd a következő kódot:

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

A Data Wrangler egyéni átalakítási funkciója képes a felhasználói felület megjelenítésére a SciPy optimalizálási függvények eredményeit, például az optimális együttható értékét (vagy több együtthatót).

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Egyedi átalakítások scikit-learn segítségével

scikit elsajátítható egy Python modul a gépi tanuláshoz, amely a SciPy-re épül. Ez egy nyílt forráskódú ML-könyvtár, amely támogatja a felügyelt és a felügyelet nélküli tanulást. Különféle eszközöket is biztosít a modellillesztéshez, az adatok előfeldolgozásához, a modell kiválasztásához, a modellértékeléshez és sok más segédprogramhoz.

Diszkretizálás

Diszkretizálás (más néven kvantálási or binning) lehetőséget biztosít a folyamatos jellemzők diszkrét értékekre való felosztására. Bizonyos folytonos jellemzőkkel rendelkező adatkészletek számára előnyös lehet a diszkretizálás, mivel a diszkretizálás a folytonos attribútumok adatkészletét olyanná alakíthatja, amely csak névleges attribútumokat tartalmaz. Az egyszeri kódolású diszkretizált jellemzők kifejezőbbé tehetik a modellt, miközben megőrzik az értelmezhetőséget. Például a diszkretizátorral végzett előfeldolgozás nemlinearitást hozhat a lineáris modellekben.

A következő kódban használjuk KBinsDiscretizer az életkor oszlop 10 ládába való diszkretizálásához:

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

A következő képernyőképen láthatja a kinyomtatott rekesz széleit.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

One-hot kódolás

Az Embarked oszlopokban szereplő értékek kategorikus értékek. Ezért ezeket a karakterláncokat számértékként kell ábrázolnunk ahhoz, hogy a modellünkkel osztályozásunkat elvégezhessük. Ezt egy-hot kódolási transzformációval is megtehetjük.

Az Embarked három értéke van: S, C és Q. Ezeket számokkal ábrázoljuk. Lásd a következő kódot:

# 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

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Tisztítsuk meg

Ha nem használja a Data Wranglert, fontos, hogy leállítsa azt a példányt, amelyen az fut, hogy elkerülje a további költségeket.

A Data Wrangler 60 másodpercenként automatikusan menti az adatfolyamot. A munkavesztés elkerülése érdekében mentse el az adatfolyamot, mielőtt leállítja a Data Wranglert.

  1. Az adatfolyam Stúdióba való mentéséhez válassza a lehetőséget filé, majd válassza ki Adatmentés Wrangler Flow.
  2. A Data Wrangler példány leállításához a Studio alkalmazásban válassza a lehetőséget Példányok és kernelek futtatása.
  3. Alatt ALKALMAZÁSOK FUTÁSA, válassza ki a leállítás ikont a sagemaker-data-wrangler-1.0 alkalmazás mellett.
  4. A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a Zárja be az összeset megerősítéséhez.

A Data Wrangler egy ml.m5.4xnagy példányon fut. Ez a példány eltűnik innen FUTÁSI PÉLDATOK amikor leállítja a Data Wrangler alkalmazást.

A Data Wrangler alkalmazás leállítása után újra kell indulnia, amikor legközelebb megnyit egy Data Wrangler folyamatfájlt. Ez eltarthat néhány percig.

Következtetés

Ebben a bejegyzésben bemutattuk, hogyan használhat egyéni átalakításokat a Data Wranglerben. A Data Wrangler konténerben található könyvtárakat és keretrendszert használtuk a beépített adatátalakítási képességek kiterjesztésére. Az ebben a bejegyzésben található példák a használt keretrendszerek egy részét képviselik. A Data Wrangler folyamatban lévő átalakítások most átméretezhetők a DataOps folyamatába.

Ha többet szeretne megtudni az adatfolyamok használatáról a Data Wranglerrel, lásd: Hozzon létre és használjon Data Wrangler Flow-t és a Amazon SageMaker árképzés. A Data Wrangler használatának megkezdéséhez lásd: Készítsen ML adatokat az Amazon SageMaker Data Wrangler segítségével. Ha többet szeretne megtudni az Autopilotról és az AutoML-ről a SageMaker-en, látogasson el ide Automatizálja a modellfejlesztést az Amazon SageMaker Autopilot segítségével.


A szerzőkről

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.Meenakshisundaram Thandavarayan vezető AI/ML specialista az AWS-vel. Segíti a hi-tech stratégiai fiókokat az AI és az ML útjukon. Nagyon szenvedélyes az adatvezérelt mesterséges intelligencia iránt.

 Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.Szovik Kumar Nath egy AI/ML megoldástervező az AWS-szel. Széles körű tapasztalattal rendelkezik a gépi tanulás teljes körű tervezésében és megoldásaiban; Üzleti elemzés a pénzügyi, működési és marketingelemzésen belül; egészségügyi ellátás; ellátási lánc; és az IoT. A munkán kívül Sovik szívesen utazik és filmeket néz.

Authoring custom transformations in Amazon SageMaker Data Wrangler using NLTK and SciPy PlatoBlockchain Data Intelligence. Vertical Search. Ai.Abigail az Amazon SageMaker szoftverfejlesztő mérnöke. Szenvedélyesen segíti ügyfeleit adataik DataWranglerben való elkészítésében, és elosztott gépi tanulási rendszereket épít. Szabadidejében Abigail szeret utazni, túrázni, síelni és sütni.

Időbélyeg:

Még több AWS gépi tanulás