ПочатиПочніть безкоштовно

Рядки та категоріальні значення

Як ви знаєте, Spark вимагає числових даних для моделювання. Досі це не було проблемою; навіть булеві стовпці без труднощів можна перетворити на цілі числа. Але ви також використовуватимете авіакомпанію та пункт призначення літака як ознаки у своїй моделі. Вони закодовані як рядки, і немає очевидного способу перетворити їх на числовий тип даних.

На щастя, у PySpark є вбудовані функції для цього в підмодулі pyspark.ml.features. Ви можете створити так звані «one-hot» вектори, щоб представити перевізника та пункт призначення кожного рейсу. One-hot вектор — це спосіб подання категоріальної ознаки, коли кожне спостереження має вектор, у якому всі елементи дорівнюють нулю, за винятком щонайбільше одного елемента зі значенням один (1).

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

Перший крок кодування вашої категоріальної ознаки — створити StringIndexer. Екземпляри цього класу — це Estimator'и, які беруть DataFrame зі стовпцем рядків і відображають кожен унікальний рядок у число. Потім Estimator повертає Transformer, який бере DataFrame, прикріплює до нього це відображення як метадані та повертає новий DataFrame з числовим стовпцем, що відповідає рядковому.

Другий крок — закодувати цей числовий стовпець як one-hot вектор за допомогою OneHotEncoder. Це працює так само, як і StringIndexer: спершу створюється Estimator, а потім Transformer. Кінцевим результатом є стовпець, який кодує вашу категоріальну ознаку як вектор, придатний для алгоритмів машинного навчання!

Це може здаватися складним, але не хвилюйтеся! Вам лише потрібно запам'ятати, що слід створити StringIndexer і OneHotEncoder, а Pipeline подбає про решту.

Чому потрібно кодувати категоріальну ознаку як one-hot вектор?

Ця вправа є частиною курсу

Основи PySpark

Переглянути курс

Практична інтерактивна вправа

Перетворіть теорію на практику за допомогою однієї з наших інтерактивних вправ

Почати вправу