Створення користувацьких перетворень в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy

Створення користувацьких перетворень в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy

«Замість того, щоб зосереджуватися на коді, компаніям слід зосередитися на розробці систематичних інженерних практик для покращення даних у спосіб, який є надійним, ефективним і систематичним. Іншими словами, компаніям необхідно перейти від підходу, орієнтованого на моделі, до підходу, орієнтованого на дані». – Ендрю Нг

Підхід штучного інтелекту, орієнтований на дані, передбачає створення систем штучного інтелекту з якісними даними, включаючи підготовку даних та розробку функцій. Це може бути виснажливим завданням, пов’язаним зі збором даних, виявленням, профілюванням, очищенням, структуруванням, перетворенням, збагаченням, перевіркою та безпечним зберіганням даних.

Amazon SageMaker Data Wrangler є послугою в Студія Amazon SageMaker який надає наскрізне рішення для імпорту, підготовки, трансформації, представлення й аналізу даних, практично не використовуючи програмування. Ви можете інтегрувати процес підготовки даних Data Wrangler у ваші робочі процеси машинного навчання (ML), щоб спростити попередню обробку даних і розробку функцій, швидше підготувати дані до виробництва без необхідності створювати код PySpark, інсталювати Apache Spark або розкручувати кластери.

Для сценаріїв, коли вам потрібно додати власні сценарії для перетворення даних, ви можете написати логіку перетворення в Pandas, PySpark, PySpark SQL. Data Wrangler тепер підтримує бібліотеки NLTK і SciPy для створення користувацьких перетворень для підготовки текстових даних для ML і оптимізації обмежень.

Ви можете зіткнутися зі сценаріями, коли вам доведеться додати власні власні сценарії для перетворення даних. Завдяки можливості спеціального перетворення Data Wrangler ви можете написати свою логіку перетворення в Pandas, PySpark, PySpark SQL.

У цій публікації ми обговорюємо, як ви можете написати власну трансформацію в NLTK, щоб підготувати текстові дані для ML. Ми також поділимося деякими прикладами трансформації спеціального коду з використанням інших поширених фреймворків, таких як NLTK, NumPy, SciPy та scikit-learn, а також AWS AI Services. Для цілей цієї вправи ми використовуємо Набір даних Титаніка, популярний набір даних у спільноті машинного навчання, який тепер додано як a зразок набору даних в Data Wrangler.

Огляд рішення

Data Wrangler надає понад 40 вбудованих конекторів для імпорту даних. Після імпорту даних ви можете створити свій аналіз даних і трансформації за допомогою понад 300 вбудованих трансформацій. Потім ви можете створювати індустріалізовані конвеєри, щоб просувати функції Служба простого зберігання Amazon (Amazon S3) або Магазин функцій Amazon SageMaker. На наступній діаграмі показано наскрізну архітектуру високого рівня.

Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Передумови

Data Wrangler — це функція SageMaker, доступна всередині Студія Amazon SageMaker. Ви можете слідкувати процес адаптації Studio щоб розкрутити середовище Studio та блокноти. Хоча ви можете вибрати один із кількох методів автентифікації, найпростішим способом створення домену Studio є дотримання Інструкції щодо швидкого початку роботи. Швидкий старт використовує ті самі налаштування за замовчуванням, що й стандартні налаштування Studio. Ви також можете вибрати використання на борту Центр ідентифікації AWS IAM (наступник AWS Single Sign-On) для автентифікації (див Підключення до домену Amazon SageMaker за допомогою IAM Identity Center).

Імпортуйте набір даних Titanic

Запустіть середовище Studio та створіть нове Потік даних Wrangler. Ви можете імпортувати власний набір даних або використати зразок набору даних (Титанік), як показано на наступному знімку екрана. Data Wrangler дозволяє імпортувати набори даних із різних джерел даних. Для нашого випадку використання ми імпортуємо зразок набору даних із сегмента S3.

Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Після імпорту ви побачите два вузли (вузол джерела та вузол типу даних) у потоці даних. Data Wrangler автоматично визначає тип даних для всіх стовпців у наборі даних.

Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Спеціальні трансформації за допомогою NLTK

Для підготовки даних і розробки функцій за допомогою Data Wrangler ви можете використовувати понад 300 вбудованих перетворень або створювати власні перетворення. Спеціальні трансформації можна записати як окремі кроки в Data Wrangler. Вони стають частиною файлу .flow у Data Wrangler. Функція спеціального перетворення підтримує Python, PySpark і SQL як різні кроки у фрагментах коду. Після того, як файли блокнота (.ipynb) створені з файлу .flow або файл .flow використовується як рецепти, настроювані фрагменти коду перетворення зберігаються, не вимагаючи жодних змін. Така конструкція Data Wrangler дозволяє користувальницьким перетворенням стати частиною завдання обробки SageMaker для обробки масивних наборів даних за допомогою користувацьких перетворень.

Набір даних Titanic має кілька функцій (назва та home.dest), які містять текстову інформацію. Ми використовуємо НЛТК щоб розділити стовпець імен і витягти прізвище, а також надрукувати частоту прізвищ. NLTK є провідною платформою для створення програм Python для роботи з даними людської мови. Він забезпечує прості у використанні інтерфейси для понад 50 корпусів і лексичних ресурсів як-от WordNet, разом із набором бібліотек обробки тексту для класифікації, токенізації, створення тегів, синтаксичного аналізу та семантичного обґрунтування, а також обгортки для промислово потужних бібліотек обробки природної мови (NLP).

Щоб додати нове перетворення, виконайте такі дії:

  1. Виберіть знак плюс і виберіть Додати трансформацію.
  2. Вибирати Додати крок І вибирай Спеціальна трансформація.

Ви можете створити спеціальне перетворення за допомогою Pandas, PySpark, призначених для користувача функцій Python і SQL PySpark.

Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

  1. Вибирати Python (Pandas) і додайте такий код, щоб отримати прізвище зі стовпця імені:
    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. Вибирати попередній перегляд щоб переглянути результати.

На наступному знімку екрана показано last_name колонка витягнута.

Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

  1. Додайте ще один настроюваний крок перетворення, щоб визначити частотний розподіл прізвищ, використовуючи такий код:
    import nltk
    fd = nltk.FreqDist(df["last_name"])
    print(fd.most_common(10))

  2. Вибирати попередній перегляд переглянути результати частоти.Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Спеціальні трансформації за допомогою сервісів AWS AI

Попередньо навчені служби штучного інтелекту AWS забезпечують готовий інтелект для ваших програм і робочих процесів. Служби штучного інтелекту AWS легко інтегруються з вашими програмами для вирішення багатьох типових випадків використання. Тепер ви можете використовувати можливості служб AWS AI як настроюваний крок трансформації в Data Wrangler.

«Амазонка» використовує NLP для отримання інформації про зміст документів. Він розвиває ідеї, розпізнаючи сутності, ключові фрази, мову, настрої та інші загальні елементи в документі.

Ми використовуємо Amazon Comprehend, щоб витягти сутності зі стовпця імен. Виконайте наступні дії:

  1. Додайте спеціальний крок трансформації.
  2. Вибирати Python (Pandas).
  3. Введіть наступний код, щоб витягти сутності:
    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. Вибирати попередній перегляд та візуалізувати результати.

Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Зараз ми додали три спеціальні трансформації в Data Wrangler.

  1. Вибирати Потік даних щоб візуалізувати наскрізний потік даних.

Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Спеціальні трансформації за допомогою NumPy і SciPy

numpy це бібліотека з відкритим кодом для Python, яка пропонує комплексні математичні функції, генератори випадкових чисел, процедури лінійної алгебри, перетворення Фур’є тощо. SciPy це бібліотека Python з відкритим вихідним кодом, яка використовується для наукових і технічних обчислень, містить модулі для оптимізації, лінійної алгебри, інтеграції, інтерполяції, спеціальних функцій, швидкого перетворення Фур’є (ШПФ), обробки сигналів і зображень, розв’язувачів тощо.

Спеціальні трансформації Data Wrangler дозволяють поєднувати Python, PySpark і SQL як різні кроки. У наведеному нижче потоці Data Wrangler різні функції з пакетів Python, NumPy і SciPy застосовуються до набору даних Titanic у кілька кроків.

Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Перетворення NumPy

У стовпці тарифів набір даних Titanic містяться тарифи на посадку різних пасажирів. Гістограма стовпця тарифу показує рівномірний розподіл, за винятком останнього відсіку. Застосовуючи перетворення NumPy, такі як log або квадратний корінь, ми можемо змінити розподіл (як показано перетворенням квадратного кореня).

Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai. Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Дивіться наступний код:

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

Такі функції SciPy, як z-score, застосовуються як частина спеціального перетворення для стандартизації розподілу вартості проїзду із середнім значенням і стандартним відхиленням.

Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Дивіться наступний код:

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

Оптимізація обмежень за допомогою NumPy і SciPy

Спеціальні перетворення Data Wrangler можуть обробляти розширені перетворення, як-от оптимізацію обмежень із застосуванням функцій оптимізації SciPy і поєднання SciPy із NumPy. У наступному прикладі вартість проїзду як функція віку не показує жодної помітної тенденції. Однак оптимізація обмежень може змінити вартість проїзду як функцію віку. Умовою обмеження в цьому випадку є те, що новий загальний тариф залишається таким же, як і старий загальний тариф. Користувальницькі перетворення Data Wrangler дозволяють запускати функцію оптимізації SciPy для визначення оптимального коефіцієнта, який може трансформувати вартість проїзду як функцію віку в умовах обмежень.

Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai. Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Визначення оптимізації, визначення цілі та численні обмеження можна згадати як різні функції під час формулювання оптимізації обмежень у спеціальному перетворенні Data Wrangler за допомогою SciPy і NumPy. Користувальницькі перетворення також можуть принести різні методи розв’язувача, які доступні як частина оптимізаційного пакета SciPy. Нову перетворену змінну можна створити шляхом множення оптимального коефіцієнта на вихідний стовпець і додавання до існуючих стовпців Data Wrangler. Перегляньте наступний код:

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 має можливість інтерфейсу користувача для відображення результатів функцій оптимізації SciPy, як-от значення оптимального коефіцієнта (або кількох коефіцієнтів).

Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Спеціальні трансформації за допомогою scikit-learn

scikit-вчитися це модуль Python для машинного навчання, створений на основі SciPy. Це бібліотека ML з відкритим кодом, яка підтримує контрольоване та неконтрольоване навчання. Він також надає різні інструменти для підгонки моделі, попередньої обробки даних, вибору моделі, оцінки моделі та багато інших утиліт.

Дискретизація

Дискретизація (інакше відомий як квантування or бінінг) забезпечує спосіб розділення безперервних ознак на дискретні значення. Деякі набори даних із безперервними ознаками можуть виграти від дискретизації, оскільки дискретизація може перетворити набір даних із безперервними атрибутами в набір із лише номінальними атрибутами. Одноразово закодовані дискретизовані функції можуть зробити модель більш виразною, зберігаючи можливість інтерпретації. Наприклад, попередня обробка за допомогою дискретизатора може внести нелінійність у лінійні моделі.

У наступному коді ми використовуємо KBinsDiscretizer щоб дискретизувати стовпець віку на 10 бункерів:

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

Ви можете побачити краї кошика, надруковані на наступному знімку екрана.

Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Одночасне кодування

Значення в стовпцях Embarked є категоріальними значеннями. Тому ми повинні представити ці рядки як числові значення, щоб виконати класифікацію за допомогою нашої моделі. Ми також могли б зробити це за допомогою одноразового перетворення кодування.

Є три значення для Embarked: S, C і Q. Ми представляємо їх числами. Перегляньте наступний код:

# 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

Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Прибирати

Коли ви не використовуєте Data Wrangler, важливо вимкнути екземпляр, на якому він працює, щоб уникнути додаткових зборів.

Data Wrangler автоматично зберігає ваш потік даних кожні 60 секунд. Щоб уникнути втрати роботи, збережіть потік даних, перш ніж вимикати Data Wrangler.

  1. Щоб зберегти потік даних у Studio, виберіть філе, Потім виберіть Збереження потоку даних Wrangler.
  2. Щоб вимкнути екземпляр Data Wrangler, виберіть у Studio Запуск екземплярів та ядер.
  3. під ЗАПУЩЕНІ ПРОГРАМИвиберіть піктограму завершення роботи поруч із програмою sagemaker-data-wrangler-1.0.
  4. Вибирати Вимкнути все підтвердити.

Data Wrangler працює на примірнику ml.m5.4xlarge. Цей екземпляр зникає з ЗАПУСКАНІ ЕКЗЕМПЛЯРИ коли ви закриваєте програму Data Wrangler.

Після завершення роботи програми Data Wrangler її потрібно буде перезапустити, коли ви наступного разу відкриєте файл потоку Data Wrangler. Це може тривати кілька хвилин.

Висновок

У цьому дописі ми продемонстрували, як ви можете використовувати спеціальні перетворення в Data Wrangler. Ми використали бібліотеки та фреймворк у контейнері Data Wrangler, щоб розширити вбудовані можливості перетворення даних. Приклади в цій публікації представляють підмножину використовуваних фреймворків. Перетворення в потоці Data Wrangler тепер можна масштабувати до конвеєра для DataOps.

Щоб дізнатися більше про використання потоків даних із Data Wrangler, див Створення та використання потоку даних Wrangler та Ціни на Amazon SageMaker. Щоб почати роботу з Data Wrangler, див Підготуйте дані ML за допомогою Amazon SageMaker Data Wrangler. Щоб дізнатися більше про Autopilot і AutoML на SageMaker, відвідайте Автоматизуйте розробку моделі за допомогою Amazon SageMaker Autopilot.


Про авторів

Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Мінакшісундарам Тандавараян є старшим спеціалістом AI/ML із AWS. Він допомагає високотехнологічним стратегічним обліковим записам на їхньому шляху ШІ та ML. Він дуже захоплений ШІ, що керується даними.

 Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Совік Кумар Натх є архітектором рішень AI/ML з AWS. Він має великий досвід у наскрізному дизайні та рішеннях для машинного навчання; бізнес-аналітика в рамках фінансової, операційної та маркетингової аналітики; охорона здоров'я; ланцюг поставок; та IoT. Поза роботою Совік любить подорожувати та дивитися фільми.

Створення спеціальних трансформацій в Amazon SageMaker Data Wrangler за допомогою NLTK і SciPy PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Камеристка є інженером із розробки програмного забезпечення в Amazon SageMaker. Вона захоплено допомагає клієнтам підготувати їхні дані в DataWrangler і створює розподілені системи машинного навчання. У вільний час Ебігейл захоплюється подорожами, походами, катанням на лижах і випічкою.

Часова мітка:

Більше від AWS Машинне навчання