
ЛР5
.docxМинистерство науки и образования Российской Федерации
Федеральное государственное бюджетное образовательное
учреждение высшего образования
«Уфимский университет науки и технологий»
Кафедра АСУ
Лабораторная работа №5
по дисциплине «Исследование операций
и прикладной искусственный интеллект»
«Модель логистической регрессии»
Вариант diabetes_var8
Выполнил: студент группы ИВТ-429Б
Саляхов А.Ф.
Проверила: старший преподаватель
кафедры АСУ
Кондратьева О.В.
Уфа 2025 г.
Описание набора данных
Датасет содержит информацию, связанную с факторами риска диабета и связанными с ними показателями здоровья. Используемых для предсказания диабета.
Описание столбцов:
Unnamed: 0 — индекс строки (численный, технический признак, не используется в модели).
Age — возраст пациента (численный, в годах).
Sex — пол пациента (бинарный: Male — мужской, Female — женский).
Ethnicity — этническая принадлежность (категориальный: значения зависят от набора данных, например, Asian, White и т.д.).
BMI — индекс массы тела (численный, кг/м²).
Waist_Circumference — окружность талии (численный, в сантиметрах).
Fasting_Blood_Glucose — уровень сахара в крови натощак (численный, мг/дл).
HbA1c — уровень гликированного гемоглобина (численный, %).
Blood_Pressure_Systolic — систолическое артериальное давление (численный, мм рт. ст.).
Blood_Pressure_Diastolic — диастолическое артериальное давление (численный, мм рт. ст.).
Cholesterol_Total — общий уровень холестерина (численный, мг/дл).
Cholesterol_HDL — уровень холестерина ЛПВП (высокой плотности) (численный, мг/дл).
Cholesterol_LDL — уровень холестерина ЛПНП (низкой плотности) (численный, мг/дл).
GGT — уровень гамма-глутамилтрансферазы (численный, ед/л).
Serum_Urate — уровень мочевой кислоты в сыворотке крови (численный, мг/дл).
Physical_Activity_Level — уровень физической активности (категориальный: например, Low — низкий, Moderate — умеренный, High — высокий).
Dietary_Intake_Calories — суточное потребление калорий (численный, ккал).
Alcohol_Consumption — потребление алкоголя (категориальный: None — не употребляет, Moderate — умеренное, High — высокое).
Smoking_Status — статус курения (категориальный: Never — не курил, Former — курил ранее, Current — курит сейчас).
Family_History_of_Diabetes — наличие семейного анамнеза диабета (бинарный: 1 — есть случаи диабета в семье, 2 — нет).
Previous_Gestational_Diabetes — наличие диабета во время беременности (бинарный: 1 — был, 2 — не было; актуально только для женщин).
Целевой фактор отсутствует в датасете. Однако, с помощью фактора Fasting_Blood_Glucose (уровень сахара в крови натощак) можно определить людей, страдающих диабетом, для этого необходимо отобрать строки со значением данного фактора >= 126.
Получение данных
Импортируем необходимые библиотеки и загружаем данные из файла:
Выводим загруженные данные на экран:
Удаляем столбец Unnamed: 0, поскольку он содержит индекс строки.
Проверим наличие строк со значением NULL в разных столбцах:
Столбец Alcohol_Consumption содержит 352 значений NULL. Чтобы не терять данные при удалении строк со значением NAN, введем новую категорию Unknown для данных строк:
Для определения целевого значения можно использовать фактор Fasting_Blood_Glucose. Для начала построим график его распределения:
Определим целевое значение с помощью фактора Fasting_Blood_Glucose (уровень сахара в крови натощак), его значение >= 126 мг/дл у людей, страдающих диабетом:
Полученные целевые значения:
Проверим, нет ли в наших данных дисбаланса классов:
Результат показывает, что дисбаланса классов нет. Разобьём имеющиеся данные на обучающую и тестовую выборки:
Проверим, нет ли пропусков в данных:
Исследовательский анализ данных
Построим матрицу корреляций:
Факторы слабо коррелируют между собой. Уберем факторы, плохо коррелирующими с предсказываемой характеристикой (y). Минимальным значением интервала с несущественными факторами будет 0.05 (такое маленькое пороговое значение взято ради эксперимента, поскольку иначе в обучающую выборку попадет лишь 1 фактор Fasting_Blood_Glucose, имеющий большую корреляцию и на основании которого вначале было вычислено целевое значение)
Проверим корреляцию выбранных факторов:
Проанализируем категориальные факторы:
Рассмотрев все категориальные признаки, можно сделать вывод о том, что ни один категориальный фактор не является значимым, поскольку их значения распределены равномерно для целевого значения. Но ради эксперимента ввиду того, что у нас всего 3 числовых фактора, возьмем все категориальные факторы.
Подготовка факторов
Импортируем необходимую библиотеку для бинарного кодирования факторов:
Закодируем категориальные признаки с помощью бинарной классификации:
В результате кодирования получим следующую таблицу:
Далее необходимо привести факторы к одинаковому масштабу. Создадим и обучим объект, который осуществляет стандартизацию значений в колонках:
Выполним масштабирование факторов:
Создание модели машинного обучения
Импортируем необходимую библиотеку и разделим данные из тренировочной выборки на тренировочную и валидационную:
На основе подготовленных факторов необходимо создать модель логистической регрессии, которая будет предсказывать значение целевой характеристики Diabetes
Оценка качества
Оценим качество работы модели на обучающей выборке с помощью метрик R-квадрат, accuracy, precision, recall, f1_score:
Вычислим значение метрики F1 Score на валидационной выборке:
Оценим качество работы модели на тестовой выборке. Для оценки качества на тестовой выборке необходимо подготовить тестовые данные:
Подготовив тестовые данные, проверим на них качество модели:
Можно сделать вывод о том, что модель не переобучилась, поскольку оценка модели на тестовых данных практически не отличается от оценки на тренировочных и валидационных.
Построим матрицу ошибок для определения количества верно предсказанных значений на тестовых данных:
Рассчитаем количество верных предсказаний:
107 + 139 = 246
Рассчитаем количество неверных предсказаний:
2 + 2 = 4
Интерпретация модели
Визуализируем коэффициенты обученной модели логистической регрессии и сопоставим полученные коэффициенты факторам модели:
Наибольший вклад в предсказание результата моделью вносит фактор Fasting_Blood_Glucose (w = 146.470), но это не удивительно, поскольку значение предсказываемой переменной было вычисленной на основании данного фактора.
Вывод: На обучающей выборке качество работы модели составляет 100%. На тестовой выборке качество 99%. Поскольку оценка модели на тестовых данных и на тренировочных отличается не сильно, можно сделать вывод о том, что модель не переобучилась.