Построить модель машинного обучения для предсказания того, курит ли пациент, на основе различных показателей здоровья. Основной используемой моделью является Random Forest
Проект включает два этапа:
- Разведочный анализ данных (EDA) - исследование структуры данных, очистка и подготовка признаков
- Обучение модели и подбор гиперпараметров - разбиение данных на train/test, нормализация, обучение Random Forest, оценка качества, оптимизация гиперпараметров
Данные хранятся в формате csv и содержат следующие типы информации:
- Идентификатор пациента (
id) - Целевой признак:
smoking(курящий / некурящий) - Числовые и категориальные признаки здоровья (давление, рост, вес, показатели слуха и зрения и тп.)
| Путь | Тип | Описание |
|---|---|---|
ml_lab_2025/source/my_utils.py |
Файл | Утилиты для логирования и загрузки данных |
ml_lab_2025/source/my_types.py |
Файл | Классы VectorPair и Samples для хранения выборок |
ml_lab_2025/source/eda.py |
Файл | Разведочный анализ данных и визуализации |
ml_lab_2025/source/model.py |
Файл | Класс Model: подготовка данных, обучение, GridSearch |
ml_lab_2025/plots/ |
Папка | Директория для сохранения графиков (hist, boxplot, corr) |
ml_lab_2025/data/ |
Папка | Директория с исходными CSV-файлами |
ml_lab_2025/requirements.txt |
Файл | Список зависимостей проекта |
ml_lab_2025/README.md |
Файл | Описание проекта, инструкции по использованию |
- Загрузка данных в
pandas.DataFrame - Первичный просмотр данных:
- первые и последние строки
- случайные образцы
- информация о типах признаков
- статистическое описание признаков
- Проверка пропусков и их обработка (удаление пустых строк и столбцов, при необходимости)
- Очистка выбросов по IQR-методу
- Визуализация данных:
- гистограммы распределения числовых признаков
- boxplot по категориям курения
- корреляционная матрица признаков с тепловой картой
- Подготовка данных:
- Разделение на
trainиtest - Масштабирование числовых признаков с помощью
StandardScaler - Исключение заранее заданных признаков (например, показатели зрения и слуха)
- Разделение на
- Обучение Random Forest:
- Базовое обучение без подбора гиперпараметров
- Обучение с подбором гиперпараметров через
GridSearchCVс кросс-валидацией (3-fold CV)
- Функция потерь:
- Используется критерий Джини (
criterion='gini') в Random Forest.
- Используется критерий Джини (
- Метрики качества:
classification_report(точность, полнота, F1-score)ROC-AUCдля оценки качества классификации
-
Графики EDA сохранены в папке
plots/:smoking.png- распределение курящих и некурящихboxplots_smoking.png- boxplot числовых признаков по категориямcorrelation_matrix.png- корреляционная матрица признаков
-
Подобранные гиперпараметры Random Forest выводятся при обучении модели.
-
Метрики качества модели (ROC-AUC и классификационные отчеты) отображаются в консоли.
Для базовой модели: ROC-AUC = 0.845317662880408
Подбор гиперпараметров: ROC-AUC = 0.8540372143749877