Skip to content

Latest commit

 

History

History

maternal_health_risk

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

Прогнозирование рисков беременных

Статус: Проект завершен. Разработано приложение на Streamlit.

Описание проекта

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

Использованные инструменты и библиотеки

Python, pandas, sklearn, matplotlib, phik, Pipeline, LogisticRegression, KNeighborsClassifier, RandomForestClassifier, XGBClassifier, Streamlit.

Вывод

В ходе данного проекта была построена модель МО для выявления беременных с рисками для здоровья.

Перед проведением анализа и моделирования была сделана предобработка данных, в ходе которой были выявлены следующие моменты и проведены следующие действия:

  • Названия столбцов приведены к "змеиному" регистру.
  • Аномальное значение ЧСС равное 7 уд/мин было рассмотрено как опечатка и умножено на 10, для приведения в нормальному.
  • Были обнаружены 574 строчки с явными дубликатами. Они были удалены.
  • Неявных дубликатов нет.

На этапе исследовательского анализа данных:

  • В данных присутствует дисбаланс классов: данных по пациентам с низким уровнем риска в 2 раза больше (51.8% всех данных или 234 человека), чем пациентов со средним и высоким уровнем.
  • Пациентов с высоким риском незначительно больше (на 1.3% или 6 человек), чем пациентов со средним уровнем риска.
  • Признаки, позволяющие хорошо разграничить пациентам по трём группам риска: age, bs.
  • Признаки, позволяющие хорошо выявить пациентов с высоким уровнем риска, но плохо разграничивающим низкий и средний уровень: systolic_bp, diastolic_bp, heart_rate.
  • Признак, плохо разграничивающий пациентов по группам риска: body_temp.

В ходе корреляционного анализа данных были расчитана матрица корреляции коэффициентов Фи. Было выявлено, что мультиколлинеарность между признаками отсутствует.

На этапе обучения модели было построено 4 модели: LogisticRegression, KNeighborsClassifier, RandomForestClassifier, XGBClassifier. Для обучения использовались 6 входных признаков: 'age', 'systolic_bp', 'diastolic_bp', 'bs', 'body_temp', 'heart_rate'.

По результатам кросс-валидации лучшей оказалась модель XGBClassifier с параметрами {learning_rate=0.05, max_depth=5, n_estimators=100, random_state=10, StandardScaler()}. Ее метрика ROC-AUC на кросс-валидации равна 0.773. Метрика ROC-AUC на тестовых данных равна 0.848.

Матрица ошибок показала хороший результат: верно были предсказаны 344 случая (TP+TN) против 62 неверных (FP+FN) на обучающей выборке, и 32 верных на тестовой против 14 неверных. Таким образом, модель достаточно хорошо позволяет выявить пациентов из группы риска.

Рекомендации:

  1. Можно протестировать вариант сведения данной задачи к бинарной классификации, т.е. разделения всех беременных на тех у кого есть риск и на тех у кого он низок, т.е объединения классов "средний риск" и "высокий риск". Таким образом, получится избежать дисбаланса классов и более точно выявить пациентов в группе риска.