1.0 Введение

В здравоохранении своевременная и точная диагностика имеет решающее значение для эффективного лечения пациентов. Сепсис — серьезное заболевание, которое может возникнуть в результате реакции организма на инфекцию, и раннее выявление имеет решающее значение для предотвращения его прогрессирования. Чтобы помочь медицинским работникам справиться с этой задачей, было разработано онлайн-приложение с использованием FastAPI. Это приложение использует машинное обучение для прогнозирования вероятности сепсиса на основе входных данных. Анализируя соответствующие данные пациентов с помощью обученной модели, поставщики медицинских услуг могут быстро и эффективно выявлять случаи сепсиса и лечить их. Эта программа является бесценным инструментом для медицинских работников, стремящихся предвидеть случаи сепсиса и оперативно реагировать на них.

Обзор 2.0

Медицинские работники всегда ищут новые способы улучшения результатов лечения пациентов, и инструменты прогнозирования могут быть чрезвычайно полезны. Традиционные методы диагностики могут отнимать много времени и подвержены человеческим ошибкам. Интеграция машинного обучения в медицинскую практику открыла новые возможности для более эффективной и точной диагностики. В этой статье обсуждается приложение на основе машинного обучения, которое прогнозирует сепсис у пациентов. Он примечателен использованием FastAPI для разработки API, Docker для развертывания и интеграции с платформой Hugging Face.

Настройка и установка версии 3.0

Прежде чем углубляться в детали приложения, крайне важно создать подходящую среду. Первым шагом является установка важных библиотек, таких как scikit-learn и Balanced-learn, которые необходимы для создания и реализации моделей машинного обучения. Кроме того, в статье подчеркивается важность использования joblib/pickle для хранения объектов, чтобы обеспечить согласованность модели и возможность повторного использования.

4.0 Обработка данных и исследовательский анализ данных (EDA)

Данные необходимы для любого проекта машинного обучения. В этой статье объясняются методы, используемые для загрузки и изучения набора данных. Он охватывает подробный анализ набора данных с использованием таких фреймворков, как pandas, numpy, seaborn и matplotlib. Исследование включает использование визуализации и статистики для понимания структуры, распределения и свойств данных. В статье также подчеркивается важность обработки пропущенных значений и повторяющихся записей для обеспечения качества и надежности данных.

5.0 Загрузка данных и обзор набора данных

Для начала статья демонстрирует, как загрузить набор данных в Google Colab с помощью механизма монтирования диска. Он дает представление о наборе данных, отображая начальные строки, чтобы ознакомить вас с его организацией и информацией. Набор данных включает в себя различные факторы, такие как уровень глюкозы в плазме, артериальное давление, индекс массы тела и другие, которые могут предсказать вероятность сепсиса. Кроме того, категориальная переменная «Сепсис» обозначает, заразился ли пациент сепсисом, как показано в следующей таблице.

ID PRG PL PR SK TS M11 BD2 Возраст Страхование Сепсис
0 ICU200010 6 148 72 35 0 33,6 0,627 50 0 Положительный
1 ICU200011 1 85 66 29 0 26,6 0,351 31 0 Отрицательный
2 ICU 200012 8 183 64 0 0 23,3 0,672 32 1 Положительный
3 ICU200013 1 89 66 23 94 28,1 0,167 21 1 Отрицательный
4 ICU200014 0 137 40 35 168 43,1 2,288 33 1 Положительный
… … … … … … … … … … …
594 ICU200604 6 123 72 45 230 33,6 0,733 34 0 Отрицательный
595 ICU200605 0 188 82 14 185 32,0 0,682 22 1 Положительный
596 ICU200 606 0 67 76 0 0 45,3 0,194 46 1 Отрицательный
597 ICU200607 1 89 24 19 25 27,8 0,559 21 0 Отрицательный
598 ICU200608 1 173 74 0 0 36,8 0,088 38 1 Положительный

599 строк × 11 столбцов

6.0. Типы данных и работа с пропущенными значениями

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

7.0 Исследовательский анализ данных (EDA)

В этой статье рассматривается исследовательский анализ данных (EDA), который является важным этапом для понимания характеристик и взаимосвязей набора данных. Используя гистограммы, сводную статистику и визуализацию, статья предлагает ценную информацию о распределении и поведении числовых переменных. В статье освещаются некоторые ключевые наблюдения, такие как правое распределение глюкозы в плазме, относительно нормальное распределение результата анализа крови-1 и сильное искажение вправо распределения результата анализа крови-3 из-за экстремальных значений. Эти наблюдения проиллюстрированы на рисунке 1.

Рисунок 1

8.0 Одномерный и двумерный анализ

Чтобы понять взаимосвязи и закономерности в наборе данных, необходимо использовать одномерную и двумерную аналитику. В этой статье объясняются эти принципы и демонстрируется их значение с использованием набора данных. Ящичные диаграммы используются для отображения распределения числовых переменных в категории «Сепсис». Эти диаграммы иллюстрируют, как различаются числовые характеристики у пациентов с сепсисом и без него. Кроме того, отчет включает категориальный анализ, который показывает, как частота сепсиса варьируется в зависимости от различных типов страхования. Эти результаты представлены на рисунках 2, 3, 4 и 5.

Тепловая карта корреляции 9.0

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

10. Выбор и оценка модели

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

1. Логистическая регрессия

2. K-ближайшие соседи

3. Дерево решений

4. Машина опорных векторов (линейное ядро)

5. Машина опорных векторов (ядро RBF)

6. Нейронная сеть

7. Случайный лес

8. Усиление градиента

9. XGBoost

Чтобы обеспечить справедливое сравнение, каждая модель будет обучаться с использованием одного и того же конвейера, состоящего из стандартного масштабатора для масштабирования признаков и специального алгоритма классификации. Мы будем оценивать модели на основе точности, отзыва, показателя F1 и точности, чтобы понять их эффективность по различным показателям оценки.

11. Настройка гиперпараметров

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

1. Усиление градиента

2. K-ближайшие соседи

3. Машина опорных векторов (ядро RBF)

4. Логистическая регрессия

Чтобы повысить производительность наших моделей на проверочных данных, мы будем использовать GridSearchCV. Этот метод тщательно просматривает заранее определенную сетку гиперпараметров, чтобы определить оптимальную комбинацию гиперпараметров. Горизонтальные гистограммы на рисунке иллюстрируют показатели четырех моделей по показателю F1.7.

12. Выбор модели и сравнение производительности

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

13. Анализ важности функций

Важно знать, какие функции наиболее значимы в прогнозной модели, чтобы понять, что движет прогнозами. В этом разделе мы рассмотрим важность функции окончательной модели (Gradient Boosting). Интерпретируя и визуализируя важность функций, мы можем определить наиболее влиятельные функции, которые способствуют прогнозам модели, как показано на рисунке 8.

14. Кривая ROC и анализ AUC

Для оценки эффективности модели двоичной классификации необходимо использовать кривую рабочей характеристики приемника (ROC) и показатель площади под кривой (AUC). Этот раздел будет включать визуализацию кривой ROC для выбранной модели и расчет показателя AUC. Кривая ROC помогает определить баланс между истинно положительными и ложноположительными показателями при различных порогах классификации, а показатель AUC измеряет способность модели различать положительные и отрицательные классы.

· Показатель AUC (площадь под кривой), равный 0,785, отражает, насколько хорошо модель повышения градиента различает положительные и отрицательные классы. Оценка варьируется от 0 до 1, где 0,5 указывает на случайный классификатор, а 1,0 — на идеальный классификатор. См. рисунок 9.

15. Анализ матрицы ошибок

Матрица ошибок — полезный инструмент для оценки эффективности модели, особенно в отношении ошибок классификации. В этом разделе мы проанализируем матрицу путаницы выбранной модели, чтобы получить представление о ее истинных положительных, истинных отрицательных, ложных положительных и ложных отрицательных результатах. Изучая эти цифры, мы можем понять ошибки, допущенные моделью, и принять обоснованные решения о ее производительности. На рис. 10 показана матрица путаницы, которую можно резюмировать следующим образом:

Матрица путаницы для модели повышения градиента показывает следующее:

Истинно положительный результат (TP): существует 26 случаев, которые правильно прогнозируются как положительные (фактический положительный результат и прогнозируемый положительный результат).

Истинно отрицательный результат (TN): существует 62 случая, которые правильно прогнозируются как отрицательные (фактически отрицательные и прогнозируемые отрицательные).

Ложноположительный результат (FP): существует 16 случаев, которые ошибочно прогнозируются как положительные (фактически отрицательные, но прогнозируемые положительные).

Ложноотрицательный результат (FN): существует 16 случаев, которые ошибочно прогнозируются как отрицательные (фактически положительные, но прогнозируемые отрицательные).

Эти результаты показывают, что модель нейронной сети правильно предсказала 26 положительных случаев и 62 отрицательных случая. Однако он ошибочно классифицировал 16 случаев как ложноположительные и 16 случаев как ложноотрицательные. Производительность модели не идеальна, но она в некоторой степени отражает как положительные, так и отрицательные случаи.

16. Прогнозы модели на новых данных

После построения и точной настройки нашей модели мы применим ее к новым, ранее неизвестным данным для генерации прогнозов. Сначала мы загрузим тестовый набор данных и предварительно обработаем его аналогично данным обучения и проверки. Затем мы применим выбранную модель для оценки вероятности сепсиса для каждого пациента. В нашей статье мы опишем, как модель работает на этих ранее невиданных данных, а также потенциальные последствия для принятия клинических решений. Этот тщательный процесс разработки и тестирования модели машинного обучения для прогнозирования сепсиса будет полезен как ученым, работающим с данными, так и специалистам здравоохранения, заинтересованным в использовании машинного обучения для медицинской диагностики.

17. Сборка и развертывание приложения FastAPI

После обучения и оценки модели машинного обучения следующим шагом будет разработка API, который позволит нам делать прогнозы с использованием модели. Для этого мы будем использовать инфраструктуру FastAPI, которая представляет собой современную и эффективную веб-инфраструктуру, предназначенную для создания API на Python. Используя приложение FastAPI, мы можем вводить данные о пациентах и ​​получать прогнозы вероятности сепсиса на основе обученной модели.

17.1 Настройка приложения FastAPI

В этом разделе мы проведем вас через процесс настройки приложения FastAPI. Мы определим модель Pydantic, которая представляет входные данные для прогнозирования, загрузим обученные компоненты машинного обучения и создадим маршруты API для обработки запросов прогнозирования. Вы можете найти код FastAPI по ссылке на мой репозиторий, приведенной в конце этой статьи.

17.2. Обработка прогнозов и предоставление результатов

Наше приложение FastAPI включает конечную точку под названием «/classify», которая принимает данные пациента в качестве входных данных и генерирует прогнозы вероятности сепсиса. Входные данные анализируются, и наша модель машинного обучения используется для прогнозирования. Затем результаты возвращаются вместе с оценками достоверности для каждой категории прогнозирования. Для визуального представления см. рисунки 11–15:

Вывод корневой конечной точки:

Sepsis_Classification_endpoint_Pre_execution:

Sepsis_Classification_endpoint_Post_execution:

17.3 Запуск приложения FastAPI

FastAPI зависит от сервера Uvicorn для запуска приложений, приложению будет назначен указанный порт (например, 8000) и оно будет доступно через HTTP-запросы. Чтобы запустить приложение FastAPI, вы можете выполнить следующие шаги:

команда:

uvicorn main:app - host 0.0.0.0 - port 8000 - reload

18. Контейнеризация с помощью Docker

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

18.1 Файл Docker

Мы определяем базовый образ, рабочий каталог, зависимости и код приложения в Dockerfile. Инструкция «CMD» устанавливает команду, которая будет выполняться при запуске контейнера, запуская приложение FastAPI с «uvicorn». На рис. 16 показаны файл docker и действие контейнера при обнимании лица.

FROM python:3.9

WORKDIR /app

COPY ./requirements.txt /requirements.txt

RUN pip install --no-cache-dir --upgrade -r /requirements.txt

COPY . .

CMD ["uvicorn", "src.main:app", "--host", "0.0.0.0", "--port", "7860"]

Docker-контейнер в действии Huggingface:

19. Развертывание приложения

Развертывание приложения FastAPI упрощается благодаря контейнеризации с помощью Docker. С помощью всего лишь одной команды все компоненты стека приложений, включая приложение FastAPI, модель машинного обучения и необходимые зависимости, можно легко развернуть на различных платформах, включая локальные серверы, облачные платформы и кластеры Kubernetes.

19.1. Запуск Docker-контейнера

Чтобы запустить контейнер Docker и развернуть приложение FastAPI, используйте следующую команду:

Приложение будет доступно по адресу http://localhost:8000, и вы сможете отправлять запросы прогнозирования, используя конечную точку /classify.

Он также доступен на Huggingface по ссылке https://junr-syl-api-sepsis-classifier.hf.space/docs#/

20. Уберите

В этой статье мы рассмотрели весь процесс создания модели машинного обучения для прогнозирования сепсиса и ее развертывания в виде приложения FastAPI с использованием Docker. Мы предоставили подробное объяснение каждого этапа, включая предварительную обработку данных, выбор модели, создание надежного API и контейнеризацию приложения. Используя этот метод, мы можем эффективно создавать прогнозные модели и гарантировать их беспрепятственное развертывание для реальных приложений. Использование таких инструментов, как FastAPI и Docker, полезно для преодоления разрыва между созданием моделей и практическим внедрением, способствуя развитию здравоохранения и других дисциплин по мере дальнейшего развития науки о данных и машинного обучения.

21. Улучшения

Хотя модель прогнозирования сепсиса была разработана и эффективно применяется, все еще существует несколько возможностей для дальнейшего улучшения и изучения. Некоторые потенциальные будущие направления включают улучшение понятности модели, интеграцию потоковой передачи данных в реальном времени для обеспечения динамических прогнозов и связь программы с системами электронных медицинских записей для более плавной интеграции в клинические рабочие процессы. Постоянно совершенствуя и расширяя нашу текущую работу с использованием передовых методов машинного обучения, мы можем внести свой вклад в текущие усилия по улучшению результатов лечения пациентов.2.

Я благодарен за ваше время, потраченное на чтение этой статьи. Наш процесс перехода от предварительной обработки данных к развертыванию моделей помог нам связать исследования в области машинного обучения с практической реализацией, что привело к инновационным решениям в здравоохранении и за его пределами. Если у вас есть какие-либо предложения или предложения, пожалуйста, свяжитесь со мной по указанному адресу электронной почты.

Признательность

Я очень рекомендую Azubi Africa за их комплексные и эффективные программы. Прочтите дополнительные статьи об Azubi Africa здесь и потратьте несколько минут, чтобы перейти по этой ссылке, чтобы узнать больше о изменяющих жизнь программах Azubi Africa.

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

ФастAPI

Обнимашка

Докер

Контакт:

"Электронная почта"

Гитхаб