One-Hot Encoding from scratch

MediumPython
05:00
Лучше работает на десктопе
Feature Engineeringencodingone-hot

Реализуйте One-Hot Encoding без использования sklearn.

Дан список категориальных значений. Преобразуйте в бинарную матрицу.

Задача основана на вопросах с собеседований в Avito.

Сигнатура

def one_hot_encode(values: list[str], categories: list[str] | None = None) -> dict:

Верните dict с ключами:
- categories: список категорий (отсортированный)
- matrix: бинарная матрица (list[list[int]])

Если categories не задан (None) — использовать отсортированные уникальные значения.

Примеры

one_hot_encode(["red","blue","green","red","blue"])
→ {"categories": ["blue","green","red"], "matrix": [[0,0,1],[1,0,0],[0,1,0],[0,0,1],[1,0,0]]}

Примеры

Пример 1

Вход:
values = ["red","blue","green","red","blue"]
Выход:{"categories":["blue","green","red"],"matrix":[[0,0,1],[1,0,0],[0,1,0],[0,0,1],[1,0,0]]}

Пример 2

Вход:
values = ["cat","dog","cat","cat","dog","bird"]
Выход:{"categories":["bird","cat","dog"],"matrix":[[0,1,0],[0,0,1],[0,1,0],[0,1,0],[0,0,1],[1,0,0]]}

Пример 3

Вход:
values = ["A","B","A"]
categories = ["A","B"]
Выход:{"categories":["A","B"],"matrix":[[1,0],[0,1],[1,0]]}
Консоль
Нажмите Run или Ctrl+Enter для запуска