Введение

Сепсис является критическим состоянием здоровья, которое ставит под угрозу иммунную систему, вызывая сбои в работе жизненно важных органов в организме. Поражение жизненно важных органов может возникнуть в результате резкого падения артериального давления (септический шок), тяжесть которого приводит к летальному исходу. Большинство людей выздоравливают от легкого сепсиса, но смертность от септического шока составляет около 30-40%. Ранняя диагностика сепсиса увеличивает шансы на выживание, а базовые знания о симптомах и триггерах могут помочь в раннем выявлении и снижении уровня смертности от сепсиса.

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

Как биологу и специалисту по данным, интересно понять склонность пациента к сепсису из предыдущих данных пациента. Этот проект сделал именно это, используя структуру CRISP-DM.

понимание бизнеса

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

Данные

Были загружены два CSV-файла: обучающий и тестовый набор данных.

Компоненты данных включены; ID - число, обозначающее идентификатор пациента, PRG - глюкоза в плазме, PL - результат исследования крови-1 (мЕд/мл), PR - артериальное давление (мм рт. ст.), SK - результат исследования крови-2 (мм), TS - кровь Результат работы-3 (мЕд/мл), M11 - Индекс массы тела (вес в кг/(рост в м)²), BD2 - Результат работы крови-4 (мЕд/мл), Возраст - Возраст пациента (лет) , Страхование — если у пациента есть действующая страховая карта, Сепсис — положительный результат: если у пациента в отделении интенсивной терапии разовьется сепсис/отрицательный результат: в противном случае.

Понимание данных

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

Целями здесь являются чистота и непротиворечивость данных, поэтому я упорядочил данные.

Затем была проверена корреляция всех столбцов данных и определены некоторые вопросы.

Гипотезы

Нулевая гипотеза: возраст является определяющим фактором развития сепсиса.

Альтернативная гипотеза: возраст не является определяющим фактором развития сепсиса.

Вопросы

  1. У скольких больных есть склонность к развитию сепсиса? 208

2. Какая возрастная группа более склонна к развитию сепсиса? Люди в возрасте от 20 до 30 лет и лица в возрасте от 40 до 50 лет.

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

4. Связана ли масса тела напрямую со склонностью пациентов к сепсису? Нет

Основываясь на данных, мы пришли к выводу, что возраст является определяющим фактором сепсиса.

Подготовка данных

После получения общего обзора данных модель машинного обучения была обучена прогнозировать возможность развития сепсиса у пациента. Данные были подготовлены и обработаны, чтобы сделать их пригодными для анализа. Целью здесь было получение чистых и непротиворечивых данных.

Здесь я создал два отдельных данных для обучения. Для первого я обрезал, чтобы исключить выбросы, а во втором я сохранил выбросы, чтобы увидеть, повлияют ли они на обученные модели.

Чтобы дополнительно подготовить данные для моделирования, данные поезда были закодированы метками, а числовые столбцы масштабированы.

Поскольку этот проект был проблемой классификации, а наша предикторная переменная (сепсис) имела дисбаланс классов, я использовал SMOTE для балансировки подмножества поездов после разделения исходных данных поездов на подмножества поездов и оценок.

Моделирование

Для моделирования было обучено 5 моделей на отдельных данных; обрезаны и необрезаны, чтобы выяснить, повлияли ли выбросы на прогноз модели.

Метрики оценки моделей с усеченными данными

Метрики оценки моделей с необработанными данными

Для обоих наборов данных модель Random Forest оказалась лучшей моделью. Однако набор данных с усеченными выбросами имел лучшие показатели оценки, чем набор данных с выбросами. Кроме того, из-за дисбаланса классов в наборе данных точность не была оценочной метрикой, а использовалась оценка f1. Затем после оценки и настройки гиперпараметров была визуализирована матрица путаницы лучшей модели, что дало лучший результат (0,90), чем первые показатели.

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

Развертывание

Предварительно обученная модель была развернута с использованием Fast API.

Fast API — это веб-фреймворк Python, используемый для быстрого и эффективного создания API. Он действует как мост между моделью машинного обучения (ML) и приложением. С помощью Fast API вы можете быстро, эффективно и безопасно анализировать данные, оценивая автоматическую документацию.

Создание API

Все необходимые библиотеки, особенно Fast API, были установлены с помощью pip. Были импортированы необходимые библиотеки, загружена обученная модель и ее компонент. Входные данные для интерфейса API были объявлены с его компонентами и типом данных. Затем данные были переданы в кадр данных pandas и пропущены через конвейер машинного обучения для прогнозирования.

Наконец, API был докеризован и развернут на Huggingface.

Подробные коды и метод развертывания см. по этой ссылке.

https://github.com/Norkplim22/Embedding-ML-Model-into-a-Web-App.git

https://huggingface.co/spaces/lindaclara22/Сепсис