Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР5

.docx
Скачиваний:
0
Добавлен:
25.06.2025
Размер:
1.11 Mб
Скачать

Министерство науки и образования Российской Федерации

Федеральное государственное бюджетное образовательное

учреждение высшего образования

«Уфимский университет науки и технологий»

Кафедра АСУ

Лабораторная работа №5

по дисциплине «Исследование операций

и прикладной искусственный интеллект»

«Модель логистической регрессии»

Вариант diabetes_var8

Выполнил: студент группы ИВТ-429Б

Саляхов А.Ф.

Проверила: старший преподаватель

кафедры АСУ

Кондратьева О.В.

Уфа 2025 г.

  1. Описание набора данных

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

Описание столбцов:

  • 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.

  1. Получение данных

Импортируем необходимые библиотеки и загружаем данные из файла:

Выводим загруженные данные на экран:

Удаляем столбец Unnamed: 0, поскольку он содержит индекс строки.

Проверим наличие строк со значением NULL в разных столбцах:

Столбец Alcohol_Consumption содержит 352 значений NULL. Чтобы не терять данные при удалении строк со значением NAN, введем новую категорию Unknown для данных строк:

Для определения целевого значения можно использовать фактор Fasting_Blood_Glucose. Для начала построим график его распределения:

Определим целевое значение с помощью фактора Fasting_Blood_Glucose (уровень сахара в крови натощак), его значение >= 126 мг/дл у людей, страдающих диабетом:

Полученные целевые значения:

Проверим, нет ли в наших данных дисбаланса классов:

Результат показывает, что дисбаланса классов нет. Разобьём имеющиеся данные на обучающую и тестовую выборки:

Проверим, нет ли пропусков в данных:

  1. Исследовательский анализ данных

Построим матрицу корреляций:

Факторы слабо коррелируют между собой. Уберем факторы, плохо коррелирующими с предсказываемой характеристикой (y). Минимальным значением интервала с несущественными факторами будет 0.05 (такое маленькое пороговое значение взято ради эксперимента, поскольку иначе в обучающую выборку попадет лишь 1 фактор Fasting_Blood_Glucose, имеющий большую корреляцию и на основании которого вначале было вычислено целевое значение)

Проверим корреляцию выбранных факторов:

Проанализируем категориальные факторы:

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

  1. Подготовка факторов

Импортируем необходимую библиотеку для бинарного кодирования факторов:

Закодируем категориальные признаки с помощью бинарной классификации:

В результате кодирования получим следующую таблицу:

Далее необходимо привести факторы к одинаковому масштабу. Создадим и обучим объект, который осуществляет стандартизацию значений в колонках:

Выполним масштабирование факторов:

  1. Создание модели машинного обучения

Импортируем необходимую библиотеку и разделим данные из тренировочной выборки на тренировочную и валидационную:

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

  1. Оценка качества

Оценим качество работы модели на обучающей выборке с помощью метрик R-квадрат, accuracy, precision, recall, f1_score:

Вычислим значение метрики F1 Score на валидационной выборке:

Оценим качество работы модели на тестовой выборке. Для оценки качества на тестовой выборке необходимо подготовить тестовые данные:

Подготовив тестовые данные, проверим на них качество модели:

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

Построим матрицу ошибок для определения количества верно предсказанных значений на тестовых данных:

Рассчитаем количество верных предсказаний:

107 + 139 = 246

Рассчитаем количество неверных предсказаний:

2 + 2 = 4

  1. Интерпретация модели

Визуализируем коэффициенты обученной модели логистической регрессии и сопоставим полученные коэффициенты факторам модели:

Наибольший вклад в предсказание результата моделью вносит фактор Fasting_Blood_Glucose (w = 146.470), но это не удивительно, поскольку значение предсказываемой переменной было вычисленной на основании данного фактора.

Вывод: На обучающей выборке качество работы модели составляет 100%. На тестовой выборке качество 99%. Поскольку оценка модели на тестовых данных и на тренировочных отличается не сильно, можно сделать вывод о том, что модель не переобучилась.

Соседние файлы в предмете Исследование операций