IIS_2023_1/shadaev_anton_lab_6/README.md
2023-11-04 21:18:36 +04:00

47 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# IIS_2023_1
### Задание
Использовать нейронную сеть (четные варианты MLPRegressor, нечетные MLPClassifier) для данных из таблицы 1 по варианту, самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо она подходит для решения сформулированной вами задачи.
29 Вариант. MLPClassifier.
### Способ запуска лабораторной работы
Выполнить скрипт `shadaev_anton_lab_6/main.py`, после которого результат будет выведен в консоль.
### Стек технологий
* `Python`: v. 3.11
* `Pandas` - библиотека, которая позволяет работать с двумерными и многомерными таблицами, строить сводные таблицы, выделять колонки, использовать фильтры по параметрам, выполнять группировку по параметрам, запускать функции (сложение, нахождение медианы, среднего, минимального, максимального значений), объединять таблицы и многое другое
* `Sklearn` - библиотека, которая предоставляет ряд инструментов для моделирования данных, включая классификацию, регрессию, кластеризацию и уменьшение размерности.
### Описание кода
1. Загрузка данных - Сначала загружаются данные из файла `'stroke_prediction_ds.csv'` с помощью функции `pd.read_csv()`.
1. Выделение признаков и целевой переменной - Затем выбираются признаки `'hypertension'`, `'heart_disease'` и `'avg_glucose_level'` в качестве входных данных, а `'age'` выбирается в качестве целевой переменной.
1. Определение категорий для целевой переменной - Целевая переменная `'age'` делится на категории с помощью функции `'pd.qcut()'`. Это делается для преобразования непрерывной переменной в категориальную.
1. Разделение данных на обучающий и тестовый наборы - Данные затем разделяются на обучающий и тестовый наборы с использованием функции `train_test_split()`.
1. Нормализация данных - Нормализация данных выполняется с помощью класса `MinMaxScaler` из библиотеки `sklearn`. Это делается для того, чтобы все признаки были в одном масштабе, что может улучшить производительность модели.
1. Обучение модели - Далее создается и обучается модель `MLPClassifier` (многослойный перцептрон), которая применяется для классификации данных.
1. Предсказание на тестовых данных - После обучения модели производятся предсказания на тестовых данных.
1. Оценка производительности модели - После предсказания модели оценивается с помощью метрик точности (`accuracy_score`) и отчета классификации (`classification_report`).
1. Вывод результатов - Наконец, результаты оценок модели выводятся на экран.
Результат:
![img.png](img.png)
### Вывод
* Точность (Accuracy) - это общая метрика, которая измеряет долю правильных прогнозов от общего количества прогнозов - в моем случае составляет ~0.48, что означает, что модель правильно предсказала 48% случаев
* Точность (Precision) - это доля правильных прогнозов среди всех прогнозов, сделанных моделью - в моем случае, например, точность для класса "18 лет" составляет 0.43, что означает, что из всех случаев, когда модель предсказывала "18 лет", на самом деле было "18 лет" в 43% случаев.
* Полнота (Recall) - это доля правильных прогнозов среди всех фактических положительных случаев - в моем случае, например, полнота для класса "18 лет" составляет 0.93, что означает, что из всех фактических случаев "18 лет", модель правильно предсказала в 93% случаях.
* F1-score - это среднее гармоническое точности и полноты, и оно дает общее представление о том, насколько хорошо модель работает на данном классе - в моем случае, например, F1-score для класса "18 лет" составляет 0.59.
* Поддержка (Support) - это количество наблюдений в каждом классе - в моем случае, например, поддержка для класса "18 лет" составляет 352.
Общая точность составляет 0.48, что указывает на то, что модель в целом работает не очень хорошо.