Кодирование — важный шаг в подготовке данных для моделей машинного обучения. Он включает преобразование категориальных данных в числовую форму, которая может быть обработана алгоритмами. В этом блоге мы рассмотрим различные методы кодирования и их реализацию в Python.
- Кодировка этикетки:
Кодирование меток — это простой метод, при котором каждому уникальному значению в категориальном признаке присваивается уникальное целое число. Давайте рассмотрим набор данных со столбцом цвета, содержащим три значения — красный, зеленый и синий. Мы можем использовать класс 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" с двоичным кодом, присвоенным каждой уникальной категории.
В заключение, кодирование — важный шаг в подготовке данных для моделей машинного обучения. Доступны различные методы кодирования, в том числе кодирование по меткам, горячее кодирование и двоичное кодирование.