Научный руководитель: Вильданов Алмаз Нафкатович
к.ф.-м.н., Уфимский университет науки и технологий, Нефтекамский филиал
В области машинного обучения и анализа данных большинство алгоритмов (такие как линейная регрессия, логистическая регрессия, деревья решений и нейронные сети) работают исключительно с числовыми данными. Однако на практике исходные наборы данных часто содержат категориальные (номинальные) признаки. Примером такого признака в вашем задании является столбец «Служил» со значениями «да» и «нет».
Задача: Преобразовать категориальный текстовый признак «Служил» в числовой формат, пригодный для обработки алгоритмами машинного обучения, без потери его логического смысла.
2. Теория
Категориальные признаки — это переменные, которые принимают значение из ограниченного набора возможных вариантов (категорий). Они бывают:
- Номинальные: Категории не имеют порядка (например, «красный», «синий», «зеленый»; «да»/«нет»).
- Порядковые: Категории имеют内在ний порядок (например, «младший», «средний», «старший»).
Проблема «наивного» присвоения чисел: Прямое присвоение чисел (например, «да» = 1, «нет» = 2) для номинальных признаков может ввести алгоритм в заблуждение. Модель может ошибочно интерпретировать, что «нет» (2) больше, чем «да» (1), или что расстояние между «да» и «нет» равно 1, что лишено смысла.
Решение: Бинарное кодирование (Label Encoding для бинарных признаков)
Для признаков, имеющих ровно две категории (бинарных), применяется простой и эффективный метод — прямое сопоставление с числами 0 и 1. Этот частный случай более общего метода Label Encoding является безопасным, так как между двумя состояниями действительно существует лишь одно логическое «расстояние».
- «да» → 1
- «нет» → 0
Такой подход полностью сохраняет информативность признака, преобразуя его в удобный для вычислений формат.
3. Решение (Практическая реализация)
Решение задачи состоит из двух этапов: ручного преобразования (для понимания сути) и программной реализации.
3.1. Ручное преобразование (Ответ на ваше задание)
Мы проходим по каждой строке Таблицы 1 и в соответствии с правилом «да» → 1, «нет» → 0 заполняем Таблицу 2.
Таблица 2. Кодировка (результат)
|
№ |
Возраст |
Служба |
| 1 | 44 | 1 |
| 2 | 41 | 0 |
| 3 | 39 | 0 |
| 4 | 17 | 1 |
| 5 | 33 | 1 |
| 6 | 47 | 0 |
3.2. Программная реализация на Python с использованием библиотеки Pandas
На практике преобразования выполняются автоматически. Вот пример кода:
python
Копировать
Скачать
import pandas as pd
# Создаем DataFrame из исходных данных
data = {
‘№’: [1, 2, 3, 4, 5, 6],
‘Возраст’: [44, 41, 39, 17, 33, 47],
‘Служил’: ['да', 'нет', 'нет', 'да', 'да', 'нет']
}
df = pd.DataFrame(data)
# Преобразуем признак “Служил” в числовой формат
df['Служба'] = df['Служил'].map({‘да’: 1, ‘нет’: 0})
# Выводим результат
print(df[['№', 'Возраст', 'Служба']])
# Сохраняем в CSV-файл (как в вашем задании)
df[['№', 'Возраст', 'Служба']].to_csv(‘my_submission.csv’, index=False)
Результат выполнения кода будет в точности соответствовать заполненной вами Таблице 2.
4. Вывод
Преобразование категориальных признаков в числовые — это критически важный и обязательный этап предобработки данных перед построением моделей машинного обучения. Для бинарных признаков, таких как «Служил», наиболее простым и корректным методом является прямое отображение значений «да»/«нет» на 1/0. Этот подход устраняет барьер между данными, понятными человеку, и данными, пригодными для машинной обработки, не искажая при этом исходную информацию и не внося ложных закономерностей в модель.
Библиографический список
- Дж. Вандер Плас. — «Python для сложных задач: наука о данных и машинное обучение». — СПб.: Питер, 2020.
- А. Бурков, А. Герасимов, Д. Ловцов. — «Машинное обучение: наука и искусство построения алгоритмов, которые извлекают знания из данных». — М.: ДМК Пресс, 2020.
- К. О. Аллен. — «Введение в машинное обучение с помощью Python. Руководство для специалистов по работе с данными». — М.: Вильямс, 2022.
