NLTK ve SciPy kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma

NLTK ve SciPy kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma

"Şirketler, koda odaklanmak yerine, verileri güvenilir, verimli ve sistematik yollarla iyileştirmek için sistematik mühendislik uygulamaları geliştirmeye odaklanmalıdır. Başka bir deyişle, şirketlerin model merkezli bir yaklaşımdan veri merkezli bir yaklaşıma geçmesi gerekiyor.” – Andrew Ng

Veri merkezli bir yapay zeka yaklaşımı, veri hazırlama ve özellik mühendisliğini içeren kaliteli verilerle yapay zeka sistemleri oluşturmayı içerir. Bu, veri toplama, keşfetme, profil oluşturma, temizleme, yapılandırma, dönüştürme, zenginleştirme, doğrulama ve verileri güvenli bir şekilde depolamayı içeren sıkıcı bir görev olabilir.

Amazon SageMaker Veri Düzenleyicisi içinde bir hizmettir Amazon SageMaker Stüdyosu çok az kodlama kullanarak veya hiç kodlama yapmadan verileri içe aktarmak, hazırlamak, dönüştürmek, özellik haline getirmek ve analiz etmek için uçtan uca bir çözüm sunar. Veri ön işlemeyi ve özellik mühendisliğini basitleştirmek, PySpark kodu yazmaya, Apache Spark'ı kurmaya veya kümeleri döndürmeye gerek kalmadan veri hazırlığını üretime daha hızlı götürmek için bir Data Wrangler veri hazırlama akışını makine öğrenimi (ML) iş akışlarınıza entegre edebilirsiniz.

Veri dönüşümleri için kendi özel komut dosyalarınızı eklemeniz gereken senaryolar için, dönüşüm mantığınızı Pandas, PySpark, PySpark SQL'de yazabilirsiniz. Data Wrangler artık makine öğrenimi için metin verileri hazırlamak ve kısıtlama optimizasyonu gerçekleştirmek amacıyla özel dönüşümler yazmak için NLTK ve SciPy kitaplıklarını destekliyor.

Veri dönüşümü için kendi özel komut dosyalarınızı eklemeniz gereken senaryolarla karşılaşabilirsiniz. Data Wrangler özel dönüştürme yeteneği ile Pandas, PySpark, PySpark SQL'de dönüşüm mantığınızı yazabilirsiniz.

Bu gönderide, makine öğrenimi için metin verileri hazırlamak üzere özel dönüşümünüzü NLTK'de nasıl yazabileceğinizi tartışıyoruz. Ayrıca NLTK, NumPy, SciPy ve scikit-learn gibi diğer yaygın çerçevelerin yanı sıra AWS Yapay Zeka Hizmetlerinin kullanıldığı bazı örnek özel kod dönüşümlerini de paylaşacağız. Bu alıştırmanın amacı için, Titanik veri setiML topluluğunda popüler bir veri kümesi olan ve artık bir örnek veri kümesi Data Wrangler içinde.

Çözüme genel bakış

Data Wrangler, verileri içe aktarmak için 40'tan fazla yerleşik konektör sağlar. Veriler içe aktarıldıktan sonra, 300'ün üzerinde yerleşik dönüşümü kullanarak veri analizinizi ve dönüşümlerinizi oluşturabilirsiniz. Ardından, özellikleri şuraya itmek için endüstriyel boru hatları oluşturabilirsiniz: Amazon Basit Depolama Hizmeti (Amazon S3) veya Amazon SageMaker Özellik Mağazası. Aşağıdaki diyagram, uçtan uca üst düzey mimariyi göstermektedir.

NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai.

Önkoşullar

Data Wrangler, içinde bulunan bir SageMaker özelliğidir. Amazon SageMaker Stüdyosu. Takip edebilirsin Studio katılım süreci Studio ortamını ve not defterlerini hızlandırmak için. Birkaç kimlik doğrulama yönteminden birini seçebilseniz de, bir Studio etki alanı oluşturmanın en basit yolu şu adımları izlemektir: Hızlı başlangıç ​​talimatları. Hızlı başlangıç, standart Studio kurulumuyla aynı varsayılan ayarları kullanır. Ayrıca şunu kullanarak katılmayı da seçebilirsiniz: AWS IAM Kimlik Merkezi (AWS Single Sign-On'un halefi) kimlik doğrulaması için (bkz. IAM Identity Center'ı Kullanarak Amazon SageMaker Etki Alanında Yerleşik).

Titanik veri kümesini içe aktarın

Studio ortamınızı başlatın ve yeni bir ortam oluşturun. Veri Wrangler akışı. Aşağıdaki ekran görüntüsünde gösterildiği gibi kendi veri setinizi içe aktarabilir veya örnek bir veri seti (Titanic) kullanabilirsiniz. Data Wrangler, farklı veri kaynaklarından veri kümelerini içe aktarmanıza olanak tanır. Kullanım durumumuz için, örnek veri kümesini bir S3 kovasından içe aktarıyoruz.

NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai.

İçe aktarıldıktan sonra, veri akışında iki düğüm (kaynak düğüm ve veri türü düğümü) göreceksiniz. Data Wrangler, veri kümesindeki tüm sütunlar için veri türünü otomatik olarak tanımlar.

NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai.

NLTK ile özel dönüşümler

Data Wrangler ile veri hazırlama ve özellik mühendisliği için 300'den fazla yerleşik dönüşüm kullanabilir veya kendi özel dönüşümlerinizi oluşturabilirsiniz. Özel dönüşümler Data Wrangler içinde ayrı adımlar olarak yazılabilir. Data Wrangler içindeki .flow dosyasının parçası olurlar. Özel dönüştürme özelliği, kod parçacıklarında farklı adımlar olarak Python, PySpark ve SQL'i destekler. .flow dosyasından not defteri dosyaları (.ipynb) oluşturulduktan veya .flow dosyası tarif olarak kullanıldıktan sonra, özel dönüştürme kod parçacıkları herhangi bir değişiklik gerektirmeden devam eder. Data Wrangler'ın bu tasarımı, özel dönüşümlerin, büyük veri kümelerini özel dönüşümlerle işlemek için bir SageMaker İşleme işinin parçası olmasına olanak tanır.

Titanic veri kümesi, metin bilgisi içeren birkaç özelliğe (ad ve home.dest) sahiptir. Kullanırız NLTK ad sütununu bölmek ve soyadını çıkarmak ve soyadlarının sıklığını yazdırmak için. NLTK, insan dili verileriyle çalışacak Python programları oluşturmaya yönelik lider bir platformdur. için kullanımı kolay arayüzler sağlar. 50'den fazla kurum ve sözlük kaynağı WordNet gibi, sınıflandırma, tokenleştirme, kök çıkarma, etiketleme, ayrıştırma ve anlamsal akıl yürütme için bir metin işleme kitaplıkları paketi ve endüstriyel güçte doğal dil işleme (NLP) kitaplıkları için sarmalayıcılar.

Yeni bir dönüşüm eklemek için aşağıdaki adımları tamamlayın:

  1. Artı işaretini seçin ve seçin Dönüşüm Ekle.
  2. Klinik Adım Ekle Ve seç Özel Dönüşüm.

Pandas, PySpark, Python kullanıcı tanımlı işlevleri ve SQL PySpark'ı kullanarak özel bir dönüşüm oluşturabilirsiniz.

NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai.

  1. Klinik Python (Pandalar) ve ad sütunundan soyadını çıkarmak için aşağıdaki kodu ekleyin:
    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. Klinik Önizleme sonuçları gözden geçirmek için.

Aşağıdaki ekran görüntüsü last_name sütun çıkarıldı.

NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai.

  1. Aşağıdaki kodu kullanarak soyadlarının sıklık dağılımını belirlemek için başka bir özel dönüştürme adımı ekleyin:
    import nltk
    fd = nltk.FreqDist(df["last_name"])
    print(fd.most_common(10))

  2. Klinik Önizleme frekans sonuçlarını incelemek içinNLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai.

AWS AI hizmetleriyle özel dönüşümler

AWS'de önceden eğitilmiş yapay zeka hizmetleri, uygulamalarınız ve iş akışlarınız için hazır zeka sağlar. AWS AI hizmetleri, birçok yaygın kullanım durumunu ele almak için uygulamalarınızla kolayca entegre olur. Artık AWS AI hizmetlerinin özelliklerini Data Wrangler'da özel bir dönüştürme adımı olarak kullanabilirsiniz.

Amazon Kavramak belgelerin içeriği hakkında bilgi edinmek için NLP'yi kullanır. Bir belgedeki varlıkları, anahtar ifadeleri, dili, duyguları ve diğer ortak öğeleri tanıyarak içgörüler geliştirir.

Varlıkları ad sütunundan çıkarmak için Amazon Comprehend'i kullanıyoruz. Aşağıdaki adımları tamamlayın:

  1. Özel bir dönüştürme adımı ekleyin.
  2. Klinik Python (Pandalar).
  3. Varlıkları ayıklamak için aşağıdaki kodu girin:
    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. Klinik Önizleme ve sonuçları görselleştirin.

NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai.

Şimdi Data Wrangler'a üç özel dönüşüm ekledik.

  1. Klinik Veri akışı uçtan uca veri akışını görselleştirmek için.

NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai.

NumPy ve SciPy ile özel dönüşümler

Dizi Python için kapsamlı matematiksel işlevler, rasgele sayı üreteçleri, lineer cebir rutinleri, Fourier dönüşümleri ve daha fazlasını sunan açık kaynaklı bir kitaplıktır. scipy optimizasyon, doğrusal cebir, entegrasyon, enterpolasyon, özel fonksiyonlar, hızlı Fourier dönüşümü (FFT), sinyal ve görüntü işleme, çözücüler ve daha fazlası için modüller içeren, bilimsel hesaplama ve teknik hesaplama için kullanılan açık kaynaklı bir Python kitaplığıdır.

Data Wrangler özel dönüşümleri, Python, PySpark ve SQL'i farklı adımlar olarak birleştirmenize olanak tanır. Aşağıdaki Data Wrangler akışında, Python paketleri, NumPy ve SciPy'den farklı işlevler Titanic veri kümesine birden çok adım olarak uygulanır.

NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai.

NumPy dönüşümleri

Titanic veri kümesinin ücret sütununda farklı yolcuların biniş ücretleri bulunur. Ücret sütununun histogramı, son kutu hariç tek tip dağılımı gösterir. Log veya karekök gibi NumPy dönüşümlerini uygulayarak dağılımı değiştirebiliriz (karekök dönüşümünde gösterildiği gibi).

NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai. NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai.

Aşağıdaki koda bakın:

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 dönüşümleri

Z-skoru gibi SciPy işlevleri, ortalama ve standart sapma ile ücret dağıtımını standart hale getirmek için özel dönüşümün bir parçası olarak uygulanır.

NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai.

Aşağıdaki koda bakın:

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

NumPy ve SciPy ile kısıtlama optimizasyonu

Data Wrangler özel dönüşümleri, kısıtlama optimizasyonu gibi SciPy optimizasyon işlevlerini uygulama ve SciPy'yi NumPy ile birleştirme gibi gelişmiş dönüşümleri işleyebilir. Aşağıdaki örnekte, yaşın bir fonksiyonu olarak ücret gözlemlenebilir herhangi bir eğilim göstermez. Bununla birlikte, kısıtlama optimizasyonu, ücreti yaşın bir fonksiyonu olarak dönüştürebilir. Bu durumda kısıtlama koşulu, yeni toplam ücretin eski toplam ücretle aynı kalmasıdır. Data Wrangler özel dönüşümleri, kısıtlı koşullar altında ücreti yaşın bir işlevi olarak dönüştürebilecek en uygun katsayıyı belirlemek için SciPy optimize etme işlevini çalıştırmanıza olanak tanır.

NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai. NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai.

SciPy ve NumPy kullanarak bir Data Wrangler özel dönüşümünde kısıtlama optimizasyonu formüle edilirken optimizasyon tanımı, hedef tanımı ve çoklu kısıtlamalardan farklı işlevler olarak bahsedilebilir. Özel dönüşümler, SciPy optimize paketinin bir parçası olarak kullanılabilen farklı çözücü yöntemleri de getirebilir. Optimal katsayı orijinal sütunla çarpılarak yeni bir dönüştürülmüş değişken üretilebilir ve mevcut Data Wrangler sütunlarına eklenebilir. Aşağıdaki koda bakın:

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 özel dönüştürme özelliği, optimum katsayı (veya birden çok katsayı) değeri gibi SciPy optimizasyon işlevlerinin sonuçlarını gösteren kullanıcı arabirimi özelliğine sahiptir.

NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai.

scikit-learn ile özel dönüşümler

scikit-öğrenme SciPy üzerine inşa edilmiş makine öğrenimi için bir Python modülüdür. Denetimli ve denetimsiz öğrenmeyi destekleyen açık kaynaklı bir makine öğrenimi kitaplığıdır. Ayrıca model uydurma, veri ön işleme, model seçimi, model değerlendirmesi ve diğer birçok yardımcı program için çeşitli araçlar sağlar.

Ayrıştırma

Ayrıştırma (diğer adıyla bilinir) niceleme or gruplama), sürekli özellikleri ayrık değerlere ayırmanın bir yolunu sağlar. Kesintisiz özelliklere sahip belirli veri kümeleri, ayrıklaştırmadan yararlanabilir çünkü ayrıklaştırma, sürekli özniteliklerin veri kümesini yalnızca nominal özniteliklere sahip bir veri kümesine dönüştürebilir. Tek seferlik kodlanmış ayrıklaştırılmış özellikler, yorumlanabilirliği korurken bir modeli daha anlamlı hale getirebilir. Örneğin, bir ayrıklaştırıcı ile ön işleme, doğrusal modellere doğrusal olmama durumu getirebilir.

Aşağıdaki kodda kullandığımız KBinsDiscretizer yaş sütununu 10 kutuya ayırmak için:

# 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şağıdaki ekran görüntüsünde yazdırılan bölme kenarlarını görebilirsiniz.

NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai.

Tek sıcak kodlama

Embarked sütunlarındaki değerler kategorik değerlerdir. Bu nedenle modelimiz ile sınıflandırmamızı yapabilmek için bu dizileri sayısal değerler olarak göstermemiz gerekmektedir. Bunu bir sıcak kodlama dönüşümü kullanarak da yapabiliriz.

Giriş için üç değer vardır: S, C ve Q. Bunları sayılarla temsil ediyoruz. Aşağıdaki koda bakın:

# 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

NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai.

Temizlemek

Data Wrangler'ı kullanmadığınızda, ek ücret ödememek için çalıştığı bulut sunucusunu kapatmak önemlidir.

Data Wrangler, veri akışınızı her 60 saniyede bir otomatik olarak kaydeder. İş kaybından kaçınmak için Data Wrangler'ı kapatmadan önce veri akışınızı kaydedin.

  1. Studio'da veri akışınızı kaydetmek için fileto, Daha sonra seçmek Veri Wrangler Akışını Kaydet.
  2. Data Wrangler örneğini kapatmak için Studio'da Çalışan Örnekler ve Çekirdekler.
  3. Altında ÇALIŞAN UYGULAMALAR, sagemaker-data-wrangler-1.0 uygulamasının yanındaki kapatma simgesini seçin.
  4. Klinik hepsini kapat onaylamak.

Data Wrangler, bir ml.m5.4xlarge örneği üzerinde çalışır. Bu örnek şuradan kaybolur: ÇALIŞAN ÖRNEKLER Data Wrangler uygulamasını kapattığınızda.

Data Wrangler uygulamasını kapattıktan sonra, Data Wrangler akış dosyasını bir sonraki açışınızda uygulamanın yeniden başlatılması gerekir. Bu birkaç dakika sürebilir.

Sonuç

Bu gönderide, Data Wrangler'da özel dönüşümleri nasıl kullanabileceğinizi gösterdik. Yerleşik veri dönüştürme yeteneklerini genişletmek için Data Wrangler kapsayıcısı içindeki kitaplıkları ve çerçeveyi kullandık. Bu gönderideki örnekler, kullanılan çerçevelerin bir alt kümesini temsil eder. Data Wrangler akışındaki dönüşümler artık DataOps için bir boru hattına ölçeklendirilebilir.

Data Wrangler ile veri akışlarını kullanma hakkında daha fazla bilgi için bkz. Veri Wrangler Akışı Oluşturun ve Kullanın ve Amazon SageMaker Fiyatlandırması. Data Wrangler'ı kullanmaya başlamak için bkz. Amazon SageMaker Data Wrangler ile ML Verilerini Hazırlayın. SageMaker'da Autopilot ve AutoML hakkında daha fazla bilgi edinmek için şu adresi ziyaret edin: Amazon SageMaker Autopilot ile model geliştirmeyi otomatikleştirin.


yazarlar hakkında

NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai.Meenakshisundaram Thandavarayan AWS'de kıdemli bir AI/ML uzmanıdır. Yapay zeka ve makine öğrenimi yolculuklarında yüksek teknolojili stratejik hesaplara yardımcı olur. Veriye dayalı yapay zeka konusunda çok tutkulu.

 NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai.Sovik Kumar Nath AWS ile bir AI/ML çözüm mimarıdır. Makine öğrenimi için uçtan uca tasarımlarda ve çözümlerde geniş deneyime sahiptir; finansal, operasyonel ve pazarlama analitiği içinde iş analitiği; sağlık hizmeti; tedarik zinciri; ve IoT. Sovik iş dışında seyahat etmeyi ve film izlemeyi seviyor.

NLTK ve SciPy PlatoBlockchain Veri Zekasını kullanarak Amazon SageMaker Data Wrangler'da özel dönüşümler yazma. Dikey Arama. Ai.Abigail Amazon SageMaker'da Yazılım Geliştirme Mühendisi. Müşterilerin verilerini DataWrangler'da hazırlamalarına ve dağıtılmış makine öğrenimi sistemleri oluşturmalarına yardımcı olma konusunda tutkulu. Abigail boş zamanlarında seyahat etmeyi, yürüyüş yapmayı, kayak yapmayı ve yemek pişirmeyi seviyor.

Zaman Damgası:

Den fazla AWS Makine Öğrenimi