One-hot кодирование категорий
Вставьте столбец категориальных значений по одному на строку — цвета, размеры, города — и получите таблицу one-hot: по столбцу на каждую категорию, 1 там, где в строке эта категория, и 0 в остальных. Уберите первый столбец, чтобы получить k − 1 фиктивных переменных для регрессии.
Работает в браузере: всё, что вы вводите, никуда не отправляется.
Как пользоваться
- Вставьте значения одного категориального столбца по одному на строку.
- Выберите CSV, TSV (вставляется в таблицу Excel) или JSON.
- Выберите порядок столбцов: как категории встречаются впервые или по алфавиту (с учётом русского алфавита).
- Отметьте Убрать первую категорию для dummy-кодирования и решите, оставлять ли столбец с исходным значением.
Как это работает
Калькулятор собирает разные значения в выбранном порядке. Для каждой строки он пишет 0 во все столбцы категорий и 1 в столбец её собственного значения. В CSV категория с запятой, кавычкой или переносом строки берётся в кавычки, как требует стандарт CSV. При dummy-кодировании первая по порядку категория убирается, и её строки состоят из нулей.
Пример
Значения красный, зелёный, красный, синий в порядке появления дают три столбца:
value,красный,зелёный,синий
красный,1,0,0
зелёный,0,1,0
красный,1,0,0
синий,0,0,1
По алфавиту с удалением первой категории столбцы — красный и синий; зелёный, первый по алфавиту, убирается, и его строка становится 0,0.
Советы
- Много категорий — много столбцов. Если значений сотни, сначала объедините редкие в «прочее».
- Список категорий берите из обучающих данных. В конвейере модели для категории, которая встретилась только в новых данных, нужно правило — строка из нулей или столбец «неизвестно».
- Excel с русской локалью ждёт CSV с точкой с запятой; для вставки в таблицу удобнее TSV.
Частые вопросы
Что такое one-hot кодирование?
Способ превратить категориальный признак в числа для машинного обучения. Каждая категория получает свой столбец; в строке стоит 1 в столбце её категории и 0 во всех остальных. В отличие от нумерации 1, 2, 3, такой способ не придумывает порядка и расстояний между категориями.
Чем one-hot отличается от dummy-кодирования?
При dummy-кодировании столбец одной категории убирается, и для k категорий остаётся k − 1 столбцов. Убранная категория — это строка из одних нулей. Это нужно линейной регрессии: k столбцов one-hot в сумме всегда дают 1 и полностью коллинеарны со свободным членом (ловушка фиктивных переменных).
Что с пустыми строками и пробелами?
Каждое значение обрезается по краям, пустые строки пропускаются. Регистр учитывается: «Москва» и «москва» станут двумя категориями. Если это одно и то же, сначала приведите данные к одному виду.
Это то же самое, что get_dummies в pandas или OneHotEncoder в scikit-learn?
Идея та же. pandas.get_dummies сортирует категории и умеет drop_first; OneHotEncoder из scikit-learn тоже сортирует их и умеет drop='first'. Выберите «По алфавиту», чтобы порядок столбцов совпал.