Представь, что у тебя есть данные, которые нельзя сразу использовать в виде чисел, например, названия животных, цветов или городов. Это называется категориальные данные, потому что они делятся на категории. One-Hot-кодирование — это способ превратить такие данные в числа, чтобы компьютер мог их понять, не путаясь.
Простыми словами, мы создаём для каждой категории отдельный столбец, где ставим:
➖1, если эта категория подходит,
➖0, если нет.
Давайте разберём это на новом, ещё более простом примере.
Пример : Любимые животные
У тебя есть три друга, и каждый любит одно животное:
- Аня любит кошек.
- Боря любит собак.
- Ваня любит рыбок.
Но компьютер может подумать, что собаки (2) "больше" кошек (1), а это неправильно — это просто разные животные, между ними нет порядка. Поэтому мы используем One-Hot-кодирование.
Как это выглядит после One-Hot-кодирования:
Мы создаём три столбца: "Кошки", "Собаки", "Рыбки". И для каждого друга ставим 1 там, где его любимое животное, и 0 в остальных местах.
Картинка 1
Теперь:
- Аня: [1, 0, 0] — любит кошек.
- Боря: [0, 1, 0] — любит собак.
- Ваня: [0, 0, 1] — любит рыбок.
Компьютер не запутается, думая, что одна категория "лучше" другой.
Каждый столбец независимый, и данные готовы для машинного обучения.
Как это сделать в коде❓
Давай применим One-Hot-кодирование🧑💻 к примеру с животными, используя Python🐍.
1. Создаём данные
import pandas as pd
data = {'Имя': ['Аня', 'Боря', 'Ваня'],
'Животное': ['кошки', 'собаки', 'рыбки']}
df = pd.DataFrame(data)
print(df)
Вывод: Картинка 2
2. Используем OneHotEncoder
from sklearn.preprocessing import OneHotEncoder
# Создаём энкодер
ohe = OneHotEncoder(sparse=False)
# Учим его на наших данных
ohe.fit(df[['Животное']])
# Преобразуем данные
ohe_animals = ohe.transform(df[['Животное']])
print(ohe_animals)
Вывод: Картинка 3
Это наши 1 и 0 для каждого человека:
- Аня: [1, 0, 0] (кошки)
- Боря: [0, 1, 0] (собаки)
- Ваня: [0, 0, 1] (рыбки)
3. Узнаём названия столбцов
print(ohe.get_feature_names())
Вывод (порядок может отличаться):
['x0_кошки' 'x0_собаки' 'x0_рыбки']
4. Добавляем в таблицу
df[ohe.get_feature_names()] = ohe_animals
print(df)
Вывод: Картинка 4
One-Hot-кодирование — это как переводчик, который помогает компьютеру понять категории без путаницы. Ты создаёшь "да/нет" столбцы для каждой категории, и это делает данные понятными и удобными для машинного обучения.



