
анализз5
.docxГУАП
КАФЕДРА № 41
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
старший преподаватель |
|
|
|
В.В. Боженко |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №5 |
КЛАССИФИКАЦИЯ |
по курсу: ВВЕДЕНИЕ В АНАЛИЗ ДАННЫХ |
|
|
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. № |
4116 |
|
|
|
|
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург 2023
Цели работы: изучение алгоритмов и методов классификации на практике.
Ход работы
Вариант 1
Загружен набор данных, который содержит информацию о сердечных болезнях (рисунок 1).
Рисунок 1 – Импортирование датасета
Произведена предварительная обработка данных. Для оценки данных использовался метод info (рисунок 2).
Рисунок 2 – Оценка данных
Затем произведено удаление явных дубликатов (рисунок 3).
Рисунок 3 – Удаление явных дубликатов
Для поиска неявных дубликатов применятся метод unique, который выводит уникальные значения (рисунок 4).
Рисунок 4 – Вывод уникальных значений
Из столбца "Sex" выводится количество уникальных значений столбце (рисунок 5).
Рисунок 5 – Уникальные значения столбца «Sex»
В столбце с полом пациентов есть одно значение, которое, вероятно всего, является ошибочным и его следует исправить. (рисунок 6).
Рисунок 6 – Замена значений
Строки с пустыми значениями были удалены (рисунок 7).
Рисунок 7 – Удаление строк с пустыми значениями
Числовым столбцам присвоен нужный тип данных (рисунок 8).
Рисунок 8 –Присвоение числового типа данных
Целевой переменной выбран столбец HeartDisease, который показывает есть ли у пациента болезнь сердца, или нет. Построена матрица диаграмм рассеяния по некоторым количественным столбцам (рисунок 9).
Рисунок 9 – Матрица диаграмм рассеяния
Диаграммы показывают, что пациенты от 60 до 70 лет в основном имеют какие-то заболевания сердца. У больных пациентов достаточно невысокий пульс. Чем старше пациент, тем выше у него давление, однако давление у больных пациентов такое же, как и у здоровых.
В датасете есть не только числовые, но и категориальные данные. Для преобразования категориальных данных в числовые использовалось порядковое кодирование (рисунок 10).
Рисунок 10 – Порядковое кодирование к категориальным данным
С помощью train_test_split данные разделены на тренировочный и тестовый датасеты (рисунок 11).
Рисунок 11 – Разделение данных на тренировочный и тестовый датасеты
Выполнена стандартизация числовых данных с помощью StandardScaler (рисунок 12).
Рисунок 12 – Стандартизация данных
Выполнено предсказание классов на тестовых данных (рисунок 13).
Метод k-ближайших соседей присваивает новому наблюдению класс или значение, исходя из классов или значений его ближайших соседей в обучающем наборе данных. Чтобы избежать ничьей в голосовании для классификации, берется нечетное значение k. Разработана модель классификации методом k-ближайших соседей с параметром n_neighbors=5.
Рисунок 13 – Классификация методом KNN
DecisionTreeClassifier - это классификатор, который строит модель на основе дерева решений для задачи классификации. Он использует структуру дерева, чтобы принимать решения о классе объектов на основе их признаков. При обучении дерева решений он ищет лучшие признаки из доступного набора для разделения данных на части, минимизируя некоторый критерий неопределенности . Это процесс построения дерева, в котором каждый узел представляет собой признак, каждая ветвь - возможное значение этого признака, а каждый лист - конечный прогноз или класс объекта (рисунок 14).
Рисунок 14 – Классификация методом Decision Tree
LogisticRegression опирается на логистическую функцию (или сигмоиду), которая преобразует выход модели в вероятность принадлежности к определенному классу. При обучении модели находятся оптимальные веса (коэффициенты) для каждого Произведено обучение модели логистической регрессии. max_iter=500 устанавливает максимальное количество итераций оптимизационного алгоритма для обучения модели. Этот параметр указывает на количество итераций, которые алгоритм может выполнить для нахождения оптимальных коэффициентов модели (рисунок 15).
Рисунок 15 – Классификация методом Logistic Regression
RandomForestClassifier - это алгоритм машинного обучения, основанный на методе "случайного леса" для задач классификации. Этот метод построения модели использует ансамбль деревьев решений, комбинирует прогнозы нескольких деревьев решений для достижения более точного и стабильного результата (рисунок 16).
Рисунок 16 – Классификация методом Random Forest
Для оценки классификации посчитаны метрики для всех методов (рисунок 17). Accuracy (доля правильных ответов) - это показатель общей точности модели, она означает отношение числа верных прогнозов к общему количеству прогнозов. Precision (точность) помогает оценить, сколько из предсказанных положительных случаев действительно верны. Recall (полнота) помогает оценить, сколько положительных случаев модель способна найти среди всех фактических положительных случаев. Сбалансированная точность (Balanced Accuracy) - это метрика оценки качества модели, которая учитывает дисбаланс классов в данных. Эта метрика является средним значением Recall для каждого класса. F1 Score является сбалансированным показателем, который учитывает и precision, и recall. Он представляет собой гармоническое среднее между этими двумя метриками.
Рисунок 17 – Расчет метрик
Logistic Regression и Random Forest демонстрируют наивысшую точность по сравнению с остальными моделями. Decision Tree также показывает хороший уровень точности, но немного ниже, чем у Logistic Regression и Random Forest. KNN имеет наименьшую точность среди всех моделей.
По метрике Precision Logistic Regression и Random Forest имеют самую высокую точность, что указывает на их способность к предсказанию положительных классов с высокой точностью. KNN также имеет наименьшую точность по сравнению с другими моделями.
Random Forest демонстрирует наивысший уровень Recall (полноты), что означает, что он лучше всего находит все истинные положительные примеры. Logistic Regression также показывает хороший уровень полноты, близкий к значению Random Forest. KNN имеет наименьшую полноту.
Значения сбалансированной точности почти соответствуют значениям Recall. Это показывает, что у моделей нет значительных различий в способности различать классы при дисбалансе данных.
F1 Score характеризует сбалансированность между Precision и Recall. Random Forest имеет самый высокий F1 Score, что свидетельствует о его способности сохранять хороший баланс между Precision и Recall.
С помощью confusion_matrix построена матрица неточностей для каждого метода и визуализирована в виде тепловой карты с использованием библиотеки seaborn, где параметр annot=True указывает, что нужно отображать числовые значения внутри карты. В такой карте каждая ячейка представляет комбинацию реальных и предсказанных классов (рисунок 18-19).
Для задачи классификации матрица неточночтей имеет следующую структуру:
True Positives (TP)- количество верно предсказанных положительных случаев (правый нижний квадрат) True Negatives (TN)- количество верно предсказанных отрицательных случаев (левый верхний квадрат). False Positives (FP) - количество ошибочно предсказанных положительных случаев (правый верхний квадрат). False Negatives (FN)- количество ошибочно предсказанных отрицательных случаев (левый нижний квадрат).
Рисунок 18- Построение матрицы неточностей
Рисунок 19- Матрица неточностей
Random Forest показывает наилучшее значение TP, что указывает на его способность лучше всего обнаруживать положительные случаи.
Logistic Regression имеет самое маленькое значение FP, это может указывать на его относительно лучшую способность предсказывать негативные случаи. KNN показывает самое большое значение FP среди других моделей, это может указывать на то, что KNN склонен делать больше ошибок, предсказывая положительный класс, когда он на самом деле отрицательный.
KNN имеет самый высокий уровень FN, это означает, что он чаще ошибочно предсказывает негативный класс как положительный.
Logistic Regression имеет самое высокое значение TN, значит она чаще всего правильно предсказывает негативные случаи как негативные.
Построены графики ROC-кривой для каждого метода (рисунок 20-21). Идеальная модель будет иметь ROC-кривую, которая стремится к верхнему левому углу графика. Это означает, что модель имеет высокую чувствительность (TPR = 1) и низкий FPR (FPR = 0) при любых значениях порога. Функция roc_curve из библиотеки sklearn.metrics, вычисляет значения False Positive Rate и True Positive Rate для модели KNN. Auc вычисляет площадь под ROC-кривой для каждой модели, что является метрикой для сравнения производительности моделей, чем выше AUC, тем лучше модель разделяет классы.. График отображает ROC-кривые для каждой модели, а также линию случайного предположения (Random Guessing), которая представляет собой прямую диагональ от (0,0) до (1,1).
Рисунок 20- Построение ROC-кривых
Рисунок 21- ROC-кривые для моделей
KNN (AUC=0.73) модель KNN имеет самый низкий AUC по сравнению с другими моделями. KNN имеет самую слабую способность разделять классы, но есть возможность улучшить ее точность. Кривая KNN ближе всего к случайному предсказыванию.
Decision Tree (AUC = 0.77): Эта модель имеет AUC больше, чем KNN.
Logistic Regression и Random Forest имет AUC=0.91 и AUC=0.92, это говорит об отличной способности различия классов. Их кривые проходят близко к левому верхнему углу, значит при высоком TPR низкий FPR, модели обнаруживают положительные случаи с высокой точностью и минимизируют ложноположительные результаты.
Ссылка на Google Colab:
https://colab.research.google.com/drive/1YomP46kF_iv6roJp6UAtolHzN_Xj5XaS?usp=sharing
Выводы
Проведен анализ четырех моделей классификации K-Nearest Neighbors, Decision Tree, Logistic Regression и Random Forest на основе набора данных о сердечных заболеваниях. Для оценки методов рассчитаны метрики, построены матрицы неточностей в виде тепловой карты и построены ROC-кривые.
Random Forest и Logistic Regression показали лучшие результаты по всем оценкам,это говорит о высокой точности и эффективности этих моделей в решении задачи классификации на основе данных о сердечных заболеваниях. Метод K-Nearest Neighbors показал самые низкие метрики оценки качества классификации по сравнию с другими моделями.