 
        
        ЛР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%. Поскольку оценка модели на тестовых данных и на тренировочных отличается не сильно, можно сделать вывод о том, что модель не переобучилась.
