/ML

Primary LanguageJupyter Notebook

Королев Игорь Михайлович

Группа: М8О-308Б-19

Почта: ikorolew02@gmail.com

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

Цель работы

Выбрать набор данных. Поставить задачу, которую необходимо решить с помощью эти данных. Определить что нужно получить на выходе, как это измерять, посмотреть на сами данные. Определить являются ли данные грязными или чистыми. Есть ли у данных пропуски. Как зависят между собой признаки. Вывести матрицу корреляции. Показать попарные корреляции между признаками. Посмотреть на зависимости и на основе этого построить визуализацию и выводы.

Задача

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

Набор данных

Набор данных о сердечной недостаточности:

  • Age - возраст пациента;

  • Sex - пол пациента;

  • ChessPainType - тип боли в груди;

  • ResingBP - артериальное давление в состоянии покоя;

  • Cholesterol - холестерин;

  • Fasting - уровень сахара в крови натощак;

  • RestingECG - ЭКГ;

  • MaxHR - максимальная достигнутая частота сердечных сокращений;

  • ExerciseAngina - Физическая стенокардия;

  • Oldpeak - снижение ST, вызванная физической нагрузкой;

  • ST_Slope - наклон снижения сегмента;

  • HeartDisease - болезнь сердца.

Выполненные действия над датасетом

  1. Был скачан датасет.

  2. С помощью pandas датасет был преобразован в удобный для работы вид.

  3. Были просмотрены данные датасета, признаки и их типы. Датасет был проверен на повторение данных, а также пустые данные.

  4. Были проанализированы числовые данные. Произведён поиск выбросов среди них. Была выведена матрица корреляции. Были просмотрены ассимметрия и эксцесс.

  5. Были проанализированы категориальные данные. Просмотрены смещение и эксцесс.

  6. Были построены корреляции различных признаков с признаком наличия болезни сердца. По корреляциям были сделаны выводы.

  7. Категориальные данные датасета были преобразованы в числовые с помощью метода OneHotEncoding.

  8. Данные были нормализованы для дальнейшего обучения.

  9. На всякий случай был проведён тест преобразованного датасета с помощью метода опорных векторов SVM.

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

Цель работы

  1. Реализовать вручную алгоритмы: Logistic Regression, SVM, KNN, Naive Bayes в отдельных классах

  2. Данные классы должны наследоваться от BaseEstimator и ClassifierMixin, и иметь методы fit и predict

  3. Вы должны организовать весь процесс предобработки, обучения и тестирования с помощью Pipeline;

  4. Вы должны настроить гиперпараметры моделей с помощью кросс валидации, вывести и сохранить эти гиперпараметры в файл, вместе с обученными моделями;

  5. Проделать аналогично с коробочными решениями

  6. Для каждой модели получить оценки метрик: Confusion Matrix, Accuracy, Recall, Precision, ROC/AUC curve

  7. Проанализировать полученные результаты и сделать выводы о применимости моделей

  8. Загрузить полученные гиперпараметры модели и обученные модели в формате pickle на гит вместе Jupyter Notebook ваших экспериментов

Вывод

Был найден для предсказания болезни сердца у пациента по определённым признакам. Над датасетом был проведён анализ и выявлены корреляции между признаками. Для того, чтобы выполнять обучение на датасете категориальные данные были преобразованы с помощью One Hot Encoding к нужному виду. Были вручную реализованы алгоритмы: Logistic Regression, SVM, KNN, Naive Bayes в отдельных классах. Весь процесс обучения и тестирования выполнялся с помощью Pipeline. Для моделей были настроены гиперпараметры, чтобы модели давали лучшие результаты. Для реализованных вручную моделей были выполнены сравнения с их коробочными реализациями. Наилучшие модели каждого типа были загружены в формате pickle.