Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Предсказание курения по показателям здоровья

Задача

Построить модель машинного обучения для предсказания того, курит ли пациент, на основе различных показателей здоровья. Основной используемой моделью является Random Forest

Проект включает два этапа:

  1. Разведочный анализ данных (EDA) - исследование структуры данных, очистка и подготовка признаков
  2. Обучение модели и подбор гиперпараметров - разбиение данных на 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 Файл Описание проекта, инструкции по использованию

Разведочный анализ данных (EDA)

  1. Загрузка данных в pandas.DataFrame
  2. Первичный просмотр данных:
    • первые и последние строки
    • случайные образцы
    • информация о типах признаков
    • статистическое описание признаков
  3. Проверка пропусков и их обработка (удаление пустых строк и столбцов, при необходимости)
  4. Очистка выбросов по IQR-методу
  5. Визуализация данных:
    • гистограммы распределения числовых признаков
    • boxplot по категориям курения
    • корреляционная матрица признаков с тепловой картой

Обучение модели

  1. Подготовка данных:
    • Разделение на train и test
    • Масштабирование числовых признаков с помощью StandardScaler
    • Исключение заранее заданных признаков (например, показатели зрения и слуха)
  2. Обучение Random Forest:
    • Базовое обучение без подбора гиперпараметров
    • Обучение с подбором гиперпараметров через GridSearchCV с кросс-валидацией (3-fold CV)
  3. Функция потерь:
    • Используется критерий Джини (criterion='gini') в Random Forest.
  4. Метрики качества:
    • 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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages