Горячее кодирование в машинном обучении: раскрытие возможностей категориальных переменных

В захватывающем мире машинного обучения данные представлены в различных формах, и одним из распространенных типов являются категориальные переменные. Эти переменные представляют качественную информацию, такую ​​как пол, цвет кожи или страна. Однако большинство алгоритмов машинного обучения лучше всего работают с числовыми данными. Вот тут-то и приходит на помощь горячее кодирование! В этой статье блога мы углубимся в горячее кодирование, рассмотрим различные методы его реализации и предоставим примеры кода, иллюстрирующие каждый подход.

Что такое горячее кодирование?
Горячее кодирование, также известное как горячее кодирование, – это метод, используемый для преобразования категориальных переменных в числовое представление, понятное моделям машинного обучения. Он создает двоичные столбцы для каждой уникальной категории в исходной переменной и присваивает значение 1 или 0, чтобы указать наличие или отсутствие этой категории в конкретном наблюдении.

Метод 1: get_dummies() в Pandas
Pandas, популярная библиотека манипулирования данными на Python, предоставляет удобный метод под названием get_dummies()для выполнения горячего кодирования. Допустим, у вас есть DataFrame под названием dataс категориальным столбцом с именем color. Вы можете использовать следующий фрагмент кода для горячего кодирования столбца color:

import pandas as pd
encoded_data = pd.get_dummies(data, columns=['color'])

Метод 2: OneHotEncoder от Scikit-learn
Scikit-learn – мощная библиотека машинного обучения, предлагающая класс OneHotEncoderдля горячего кодирования категориальных переменных. Вот как вы можете его использовать:

from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder()
encoded_data = encoder.fit_transform(data[['color']])

Метод 3: tf.feature_column в TensorFlow
Если вы работаете с TensorFlow, вы можете использовать модуль tf.feature_columnдля горячего кодирования категориальных переменных. Вот пример:

import tensorflow as tf
feature_column = tf.feature_column.indicator_column(
    tf.feature_column.categorical_column_with_vocabulary_list(
        key='color', vocabulary_list=data['color'].unique()
    )
)
encoded_data = tf.feature_column.input_layer(features=data, feature_columns=[feature_column])

Метод 4: кодирование меток + OneHotEncoding
В некоторых случаях может оказаться полезным использование кодирования меток перед горячим кодированием. Кодирование меток преобразует категориальные значения в целочисленные метки, а затем применяется горячее кодирование. Вот пример использования scikit-learn:

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
label_encoder = LabelEncoder()
data['color_encoded'] = label_encoder.fit_transform(data['color'])
onehot_encoder = OneHotEncoder()
encoded_data = onehot_encoder.fit_transform(data[['color_encoded']])

Горячее кодирование – это мощный метод представления категориальных переменных таким образом, чтобы его могли понять алгоритмы машинного обучения. В этой статье мы рассмотрели четыре различных метода выполнения горячего кодирования: get_dummies()Pandas, OneHotEncoderscikit-learn, tf.feature_columnTensorFlow и кодирование меток. в сочетании с горячим кодированием. У каждого метода есть свои преимущества, поэтому выберите тот, который соответствует вашим конкретным потребностям. Применяя горячее кодирование, вы можете раскрыть весь потенциал категориальных переменных и повысить производительность ваших моделей машинного обучения.