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

  1. Кодировка этикетки:

Кодирование меток — это простой метод, при котором каждому уникальному значению в категориальном признаке присваивается уникальное целое число. Давайте рассмотрим набор данных со столбцом цвета, содержащим три значения — красный, зеленый и синий. Мы можем использовать класс LabelEncoder scikit-learn для кодирования этой функции:

from sklearn.preprocessing import LabelEncoder

color = ['red', 'green', 'blue', 'blue', 'red', 'green']
encoder = LabelEncoder()
color_encoded = encoder.fit_transform(color)
print(color_encoded)

Выход:

[2 1 0 0 2 1]

Здесь «красному» присвоено значение 2, «зеленому» — 1, а «синему» — 0.

2. Горячее кодирование:

Горячее кодирование создает двоичный столбец для каждой категории и присваивает 1 или 0 каждой строке. Рассмотрим набор данных со столбцом гендера, содержащим два значения — мужской и женский. Мы можем использовать функцию get_dummies() от pandas для быстрого кодирования этой функции:

import pandas as pd

gender = ['male', 'female', 'male', 'male', 'female']
gender_encoded = pd.get_dummies(gender)
print(gender_encoded)

Выход:

      female  male
0       0     1
1       1     0
2       0     1
3       0     1
4       1     0

Здесь столбец "пол" разделен на два столбца - "женский" и "мужской" - с присвоением каждой строке 1 или 0.

3. Двоичное кодирование:

Двоичное кодирование похоже на однократное кодирование, но вместо создания двоичного столбца для каждой категории создается двоичный код для каждой уникальной категории. Рассмотрим набор данных со столбцом города, содержащим четыре значения: Нью-Йорк, Лондон, Париж и Токио. Мы можем использовать класс BinaryEncoder от category_encoders для двоичного кодирования этой функции:

import category_encoders as ce
import pandas as pd

city = ['New York', 'London', 'Paris', 'Tokyo', 'Paris']
encoder = ce.BinaryEncoder(cols=['city'])
city_encoded = encoder.fit_transform(pd.DataFrame(city, columns=['city']))
print(city_encoded)

Выход:

     city_0  city_1  city_2  city_3
0       0       0       0       1
1       0       0       1       0
2       0       0       1       1
3       0       1       0       0
4       0       0       1       1

Здесь столбец "город" двоично закодирован в четыре столбца: "город_0", "город_1", "город_2" и "город_3" с двоичным кодом, присвоенным каждой уникальной категории.

В заключение, кодирование — важный шаг в подготовке данных для моделей машинного обучения. Доступны различные методы кодирования, в том числе кодирование по меткам, горячее кодирование и двоичное кодирование.