#6 – Подготовка данных - 80% успеха
Видеоурок
Чистка данных: пропуски, нормализация, категории
Когда вы загружаете данные — будь то Excel-таблица, CSV-файл или данные из API — они почти всегда «грязные». Это значит, что могут быть пустые значения, ошибки во вводе, разные форматы даты и многое другое.
Первое, что нужно сделать, — это взглянуть на данные глазами. Просто открыть их и посмотреть: где пропущены значения, где вместо числа стоит строка. В Python для этого часто используют библиотеку pandas, потому что с её помощью можно легко прочитать таблицу, просмотреть первые строки, увидеть статистику по столбцам и т.д.
Если вы видите, что в каком-то столбце есть NaN (пустое значение), есть два варианта: либо удалить такие строки, либо заполнить пропуски средним значением, медианой, нулём или даже предсказанным значением. Всё зависит от ситуации.
Следующий важный шаг — нормализация данных. Алгоритмы машинного обучения чувствительны к масштабам. Если один столбец измеряется в километрах, а другой — в метрах или в долларах, результат может быть некорректным. Нормализация — это приведение всех чисел к одному масштабу, чаще всего от 0 до 1.
Ещё одна частая проблема — категориальные данные. Например, в столбце «Пол» указано «М» и «Ж», или в столбце «Город» — «Лондон», «Париж», «Милан». Алгоритмы не понимают текст, поэтому такие значения нужно перевести в числа. Это называется one-hot encoding.
После всех этих шагов у вас получится гораздо более чистый, структурированный и понятный датафрейм.
Разделение на тренировочные и тестовые данные
Когда у вас готовы данные, важно не поддаться соблазну и сразу не обучать модель на всём датасете. Вы обязательно должны разделить данные на две части: train и test. Обучение происходит только на train, а оценка качества модели — на test. Это помогает понять, как модель будет работать на новых, невиданных данных.
В Python для этого чаще всего используют функцию train_test_split из библиотеки sklearn. Параметр test_size=0.2 означает, что 20% данных уйдут в тестовую выборку. А random_state просто фиксирует случайность, чтобы результат был воспроизводим.
Переобучение (overfitting) и как его избежать
Одна из самых частых ошибок — это переобучение. Это ситуация, когда модель слишком хорошо запоминает тренировочные данные, но плохо работает на новых. Например, вы натренировали модель угадывать цену квартиры по площади и расположению, и на тренировочных данных она идеально предсказывает цену. Но стоит ей показать новую квартиру — и она ошибается.
Переобучение происходит, когда модель слишком сложна для ваших данных: слишком много параметров, слишком много эпох обучения, слишком мало данных. Это как студент, который выучил ответы на конкретные билеты, а на экзамене растерялся.
Чтобы избежать переобучения, старайтесь:
- Использовать простой алгоритм (не нейросеть, если в этом нет необходимости);
- Добавлять регуляризацию;
- Увеличивать тренировочную выборку;
- И рано останавливать обучение.
Также стоит посмотреть