Skip to content

Isaev-Alexander-1985/heart-attack-risk-predictor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проект: Сервис для предсказания рисков сердечного приступа

Данный проект представляет собой end-to-end MLOps решение для предсказания риска сердечного приступа. Проект охватывает полный цикл: от исследовательского анализа данных (EDA) до развертывания обученной модели в виде публичного веб-сервиса с помощью FastAPI.

🚀 Демонстрация работы API

Готовое приложение развернуто на платформе Render и доступно для тестирования.

Интерактивная документация (Swagger UI): https://heart-risk-predictor-api.onrender.com/docs

Далее приведена пошаговая инструкция, как протестировать сервис.

🧪 Как протестировать API

Вы можете легко проверить работу сервиса, отправив тестовые данные через интерактивный интерфейс.

  1. Перейдите по ссылке: https://heart-risk-predictor-api.onrender.com/docs

  2. Активируйте эндпоинт: В открывшемся интерфейсе найдите блок POST /predict_csv и нажмите на кнопку Try it out.

  3. Выберите файл для отправки: В появившемся поле file нажмите Choose File и выберите тестовый файл data/heart_test.csv из этого репозитория.

  4. Отправьте запрос: Нажмите синюю кнопку Execute, чтобы отправить файл на сервер для обработки.

  5. Получите результат: Прокрутите страницу ниже до раздела Server response. Там вы увидите ответ от API в формате JSON, содержащий предсказания для каждой строки из отправленного файла.

🗂️ Структура репозитория

heart-attack-risk-predictor/
├── app/
│   └── main.py                     # Код FastAPI приложения
├── data/
│   ├── heart_train.csv             # Данные для обучения
│   └── heart_test.csv              # Тестовые данные для API
├── models/
│   └── catboost_final_model.cbm    # Обученная модель
├── notebooks/
│   └── research.ipynb              # Jupyter Notebook с исследованием
├── How_to_use_the_application.md   # Детальная инструкция по API
├── requirements.txt                # Файл с зависимостями для развертывания
└── Readme.md                       # Этот файл

🔍 Ключевые выводы из анализа данных

В ходе исследования (notebooks/research.ipynb) были выявлены критические проблемы в исходных данных, которые существенно ограничили предсказательную способность модели:

  1. ❗️ Критическая утечка данных (Data Leakage): Признаки Sedentary Hours Per Day, BMI, Income и Exercise Hours Per Week имели идеальную корреляцию (1.00) с целевой переменной. Эти признаки были полностью исключены из обучения.

  2. 📉 Низкое качество данных: Многие признаки имели неправдоподобные распределения, что свидетельствует о возможной синтетической природе данных.

  3. 🔗 Сильная мультиколлинеарность: Была обнаружена высокая корреляция между такими признаками, как Diet, Triglycerides и Cholesterol.

  4. ⚖️ Дисбаланс классов: В данных наблюдался значительный дисбаланс классов (пациентов с риском было намного меньше).

Итог анализа: Исходные данные имеют фундаментальные проблемы, которые не позволяют построить модель с высокой практической ценностью.

⚙️ Моделирование и выбор модели

  • Метрика качества: Из-за дисбаланса классов в качестве основной метрики была выбрана ROC AUC.

  • Финальная модель: В качестве итоговой модели была выбрана CatBoostClassifier за её способность нативно обрабатывать пропуски и категориальные признаки, что упрощает пайплайн.

  • Итоговое качество: Финальная модель показала ROC AUC ≈ 0.57 на валидационной выборке. Этот результат лишь ненамного превышает случайное угадывание (0.5), что подтверждает вывод о невозможности построения качественной модели на имеющихся данных.

🛠️ Стек технологий

  • Python 3.10+
  • FastAPI: Высокопроизводительный веб-фреймворк для создания API.
  • Uvicorn: ASGI-сервер для запуска FastAPI.
  • CatBoost: Библиотека для градиентного бустинга.
  • Scikit-learn: Для утилит машинного обучения.
  • Pandas & NumPy: Для обработки и анализа данных.
  • Jupyter Notebook: Для исследовательского анализа.

About

Сервис для предсказания рисков сердечного приступа

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors