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

Обзор

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

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

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

Взгляните на картину в целом

Добро пожаловать в Машинное обучение Диабет-Реадмиссия-Прогнозирование-! Первое, что вас попросят выполнить, - это построить модель прогноза реадмиссии диабета.

Эти данные содержат такие метрики, как идентификатор_ встречи, номер пациента, раса, пол, возраст, вес, идентификатор_подпуска, идентификатор_выпуска, идентификатор_подпуска, время_в_больнице, код_плательщика и т. Д.

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

Создайте рабочее пространство

Во-первых, вам необходимо установить Python. Вероятно, он уже установлен в вашей системе. Если нет, вы можете получить его на https://www.python.org/. 7 Затем вам необходимо создать каталог рабочей области для кода и наборов данных машинного обучения. Откройте терминал и введите следующие команды (после подсказок $):

Вам понадобится ряд модулей Python: Jupyter, NumPy, Pandas, Matplotlib и Scikit-Learn. Если у вас уже запущен Jupyter со всеми установленными модулями, вы можете смело переходить к «Загрузке данных». Если у вас их еще нет, есть много способов установить их (и их зависимости). Вы можете использовать систему упаковки вашей системы (например, apt-get в Ubuntu или MacPorts или HomeBrew в macOS), установить дистрибутив Scientific Python, такой как Anaconda, и использовать его систему упаковки или просто использовать собственную систему упаковки Python, pip, которая является по умолчанию включены в бинарные установщики Python (начиная с Python 2.7.9). 8 Вы можете проверить, установлен ли pip, введя следующую команду:

Вы должны убедиться, что у вас установлена ​​последняя версия pip, по крайней мере, ›1.4 для поддержки установки двоичного модуля (также известного как колеса).

Вы можете установить все необходимые модули и их зависимости, используя эту простую команду pip:

Теперь в вашем терминале работает сервер Jupyter, который прослушивает порт 8888. Вы можете посетить этот сервер, открыв свой веб-браузер по адресу http: // localhost: 8888 / (обычно это происходит автоматически при запуске сервера). Вы должны увидеть свой пустой каталог рабочей области (содержащий только каталог env, если вы следовали предыдущим инструкциям по виртуальной среде).

Скачать данные

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

Чтобы получить к нему доступ, вам сначала нужно получить свои учетные данные и авторизацию доступа 11, а также ознакомиться со схемой данных. Однако в этом проекте все намного проще: вы просто загрузите один сжатый файл, который содержит файл значений с разделителями-запятыми (CSV) с именем data.csv со всеми данными.

Автоматизация процесса выборки данных также полезна, если вам нужно установить набор данных на нескольких компьютерах.

Ссылка для загрузки данных: https://github.com/zahrael97/-Diabetes-Readmission-Prediction-/blob/master/diabetic_data.csv

Он включает более 50 функций, представляющих результаты пациентов и больниц. Всего около 1 000 000 записей. Данные были доступны в виде таблицы Excel.
Они были прочитаны в файле Python, и был проведен анализ этих данных.

Кратко взгляните на структуру данных

Давайте посмотрим на пять верхних строк с помощью метода head () DataFrame.

Каждая строка представляет один район. Всего 20 атрибутов (первые 10 вы видите на скриншоте): meet_id, пациент_nbr, раса, пол, возраст, вес, admission_type_id, разгрузка_disposition_id, admission_source_id, time_in_hospital.

Метод info () полезен для быстрого получения описания данных, в частности, общего количества строк, типа каждого атрибута и количества ненулевых значений:

Посмотрим на другие поля. Метод description () показывает сводку числовых атрибутов.

Строки count, mean, min и max не требуют пояснений. Строка std показывает стандартное отклонение (которое измеряет, насколько разбросаны значения). Строки 25%, 50% и 75% показывают соответствующие процентили: процентиль указывает значение, ниже которого падает данный процент наблюдений в группе наблюдений.

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

удалить недостающие значения

Из вышеизложенного мы видим, что «Weight, payer_code и medical_specialty» имеют много пропущенных значений, поэтому лучше удалить эти значения набора данных!

Удаление умерших пациентов из набора данных.

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

разница между возрастом и количеством лекарств, принимаемых пациентом.

Между полом и реадмиссией

Связь между возрастом и реадмиссией.

Подготовьте данные для алгоритмов машинного обучения

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

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

Очистка данных

Большинство алгоритмов машинного обучения не могут работать с отсутствующими функциями, поэтому давайте создадим несколько функций, которые позаботятся о них. Ранее вы заметили, что в атрибуте total_bedrooms отсутствуют некоторые значения, так что давайте это исправим. У вас есть три варианта: Избавиться от соответствующих районов. Избавьтесь от всего атрибута. Установите значения на некоторое значение (ноль, среднее, медианное и т. Д.). Это легко сделать с помощью методов dropna (), drop () и fillna () DataFrame.

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

Разделение данных на наборы данных для обучения и проверки. Данные обучения будут содержать 80% данных, а проверка будет содержать оставшиеся 20%.

Scikit-Learn предоставляет несколько функций для разделения наборов данных на несколько подмножеств различными способами. Самая простая функция - train_test_split, которая делает почти то же самое, что и функция split_train_test, определенная ранее, с парой дополнительных функций. Во-первых, есть параметр random_state, который позволяет вам установить начальное число генератора случайных чисел, как объяснялось ранее, а во-вторых, вы можете передать ему несколько наборов данных с одинаковым количеством строк, и он разделит их по одним и тем же индексам (это очень полезно , например, если у вас есть отдельный DataFrame для этикеток):

Были выбраны следующие модели:
1. Логистическая регрессия
2. Деревья решений
3. Случайный лес
Эти модели были выбраны, потому что нашей целью было предсказать повторную госпитализацию пациентов с диабетом, поэтому мы выбирайте контролируемые алгоритмы.

Проверка производительности модели с использованием графиков кривой ROC.

Сравнить модели

Вывод

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

Это мое личное исследование, если у вас есть какие-либо комментарии, пожалуйста, свяжитесь со мной.

Github, LinkedIn, Захра Эльхамрауи, Upwork