НачатьНачать бесплатно

Строки и категориальные признаки

Как вы знаете, 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

Посмотреть курс

Практическое интерактивное упражнение

Превратите теорию в практику с помощью одного из наших интерактивных упражнений

Начать упражнение