Инсульт - это заболевание, которое поражает артерии, ведущие к головному мозгу и внутри него. По данным Американской ассоциации инсульта, это причина смерти №5 и ведущая причина инвалидности в США. Исследования также показали, что черные чаще встречаются у чернокожих, чем у людей двухрасового происхождения.
Воздействие инсульта на жизнь людей представляет собой серьезную проблему для общества. Помимо того, что инсульт является внезапным событием, он поражает как отдельного человека, так и членов его семьи, которые не готовы справиться с процессом реабилитации или инвалидностью, являющейся результатом этого состояния. В результате многие люди не могут работать и получать финансовую помощь после перенесенного инсульта.
Прогнозирование возникновения инсульта у субъектов:
Набор данных, используемый для этого исследования, можно оценить здесь с ответами 62 001 пациента мужского и женского пола, перенесших инсульт (1) и не перенесших (0). Выбранный набор данных несбалансирован, инсульт зарегистрирован менее чем у 800 пациентов. Этот дисбаланс будет обработан ROS (случайная передискретизация для выравнивания данных). См. Словарь данных ниже:
Теперь самое интересное!
Шаги, необходимые для построения модели логистической регрессии:
- Импорт библиотек
- Прочитать в CSV-файле
- Предварительная обработка данных
- Обработка категориальных переменных
Импорт библиотек:
Импортируйте необходимые библиотеки в блокнот Jupyter:
Прочтите в файлах CSV:
train_data содержит целевую переменную и будет использоваться для построения модели логистической регрессии.
Построенная модель будет использоваться для прогнозирования вероятности инсульта у пациентов в test_data.
train_data = pd.read_csv (‘train_2v.csv’)
test_data = pd.read_csv (‘test_2v.csv’)
Предварительная обработка данных:
Проверка нулевых значений в наборе данных.
train_data.isnull (). sum () / len (train_data) * 100
3% и 30,6% ячеек BMI и Smoking_status равны нулю.
test_data.isnull (). sum () / len (train_data) * 100
1% и 13% ячеек BMI и Smoking_status равны нулю.
Чтобы управлять недостающими клетками ИМТ в train_data:
train_data [«bmi»] = train_data [«bmi»]. fillna (train_data [«bmi»]. mean ())
Этим я заполнил пустые ячейки средним ИМТ набора данных, равным 28,6.
Обработка категориальных переменных:
Label Encoder преобразует категориальные переменные / функции в единицы или нули в зависимости от значения переменной. Подробнее о Label Encoder () читайте здесь.
Для просмотра этого изменения используйте: train_data.shape () или train_data.head ()
label = LabelEncoder ()
train_data ['пол'] = label.fit_transform (train_data ['пол'])
train_data ['ever_married'] = label.fit_transform (train_data ['ever_married']) < br /> train_data ['work_type'] = label.fit_transform (train_data ['work_type'])
train_data ['Residence_type'] = label.fit_transform (train_data ['Residence_type'])
Столбец ID уникален для каждого предмета, и его следует отбросить, так как он не повлияет на модель:
train_data.drop ([«id»], axis = 1, inplace = True) # удаление столбца id.
Пока что обработаны все переменные, кроме переменной Smoking_status. В переменной Smoking_status в настоящее время отсутствует более 30% нуля (в данном случае NaN).
Вместо того, чтобы полностью отбросить весь столбец (чтобы не пропустить соответствующие вклады в модель), я решил разделить train_data на две части, чтобы построить две логистические модели (одну со значением Smoking_status и без него) и работать с лучшей из них.
training_data_without_smokingstatus = train_data [train_data [‘Smoking_status’]. isnull ()] # для пациентов без информации о курении.
# отбрасывает столбец статуса курения для нулевого набора данных статуса курения.
training_data_without_smokingstatus.drop (columns = ’Smoking_status’, axis = 1, inplace = True)
print («Тренировочные данные без формы статуса курения {}» .format (training_data_without_smokingstatus.shape))
training_data_with_smokingstatus = train_data [train_data [‘Smoking_status’]. notnull ()] # для пациентов с информацией о курении.
print («Тренировочные данные с формой статуса курения {}» .format (training_data_with_smokingstatus.shape))
Рад, что вы зашли так далеко! Чтобы избежать ситуаций TL и DR, я завершу статью в другом посте на Medium. Увидимся там:
Моя следующая статья будет посвящена следующему:
Обработка дисбаланса данных
Построение модели
Тестирование модели
ОБНОВИТЬ:
Я выполнил проект здесь:
Использованная литература:
- Американская ассоциация инсульта. [Ссылка на сайт]
- Берта Эке, Адесола Огуннийи, Эммануэль Исамаде, Удеме Экрикпо. Afr Health Sci. 2015 Март; 15 (1): 74–81. [Смертность от инсульта и его предикторы в нигерийской клинической больнице]