IIS_2023_1/shadaev_anton_lab_3/README.md

76 lines
8.8 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
### Задание
<u>Часть 1.</u> По данным о пассажирах Титаника решите задачу классификации (с помощью дерева решений), в которой по различным характеристикам пассажиров требуется найти у выживших пассажиров два наиболее важных признака из трех рассматриваемых (по варианту). Пример решения задачи можно посмотреть здесь: [1] (стр.188). Скачать данные можно по ссылке: https://www.kaggle.com/datasets/heptapod/titanic
<u>9 Вариант.</u> Pclass, Cabin,Embarked 10 Name, Cabin,Embarked
<u>Часть 2.</u> Решите с помощью библиотечной реализации дерева решений задачу из лабораторной работы «Веб-сервис «Дерево решений» по предмету «Методы искусственного интеллекта» на 99% ваших данных. Проверьте работу модели на оставшемся проценте, сделайте вывод
### Способ запуска лабораторной работы
Чтобы запустить 1-ю часть лабораторной работы, нужно запустить скрипт `shadaev_anton_lab_3/titanic.py`
Чтобы запустить 2-ю часть лабораторной работы, нужно запустить скрипт `shadaev_anton_lab_3/stroke_prediction.py`
### Стек технологий
* `Sklearn` - библиотека, которая поддерживает различные методы регрессии и классификации, включая линейную регрессию, метод k-ближайших соседей, регрессию опорных векторов, деревья принятия решений, ансамбль методов, такие как random forest и градиентный бустинг
* `Pandas` - библиотека, которая позволяет работать с двумерными и многомерными таблицами, строить сводные таблицы, выделять колонки, использовать фильтры по параметрам, выполнять группировку по параметрам, запускать функции (сложение, нахождение медианы, среднего, минимального, максимального значений), объединять таблицы и многое другое
### Описание кода
<u>Часть 1.</u>
1. Импорт необходимых библиотек и модулей: `pandas` для работы с данными, `train_test_split` из `sklearn.model_selection` для разделения данных на обучающий и тестовый наборы, `DecisionTreeClassifier` из `sklearn.tree` для создания модели классификации, и `LabelEncoder` из `sklearn.preprocessing` для преобразования категориальных данных в числовые, `scikit-learn.org`.
1. Загрузка данных о пассажирах на "Титанике" из CSV-файла с помощью `pandas`.
1. Обработка пропущенных значений в столбце 'Embarked', заменяя их на 'S'.
1. Преобразование категориальных данных в числовые с помощью `LabelEncoder`. Это делается для столбцов 'Pclass', 'Cabin' и 'Embarked'.
1. Вывод первых 10 записей из обработанного набора данных.
1. Разделение данных на признаки (X) и целевую переменную (y).
1. Разделение данных на обучающий и тестовый наборы с помощью функции `train_test_split` из `sklearn.model_selection`. 20% данных выделяются для тестового набора, а остальные 80% - для обучающего.
1. Создание модели классификации на основе алгоритма решающего дерева с помощью `DecisionTreeClassifier` из `sklearn.tree`.
1. Обучение модели с использованием обучающего набора данных.
1. Вычисление и вывод важности признаков для модели. Это делается с помощью атрибута `feature_importances_ `модели.
<u>Часть 2.</u>
1. Импорт необходимых библиотек и модулей: `pandas` для работы с данными, `accuracy_score` и `mean_squared_error` из `sklearn.metrics` для вычисления метрик модели, `train_test_split` из `sklearn.model_selection` для разделения данных на обучающий и тестовый наборы, и `DecisionTreeClassifier` из `sklearn.tree` для создания модели классификации.
1. Загрузка данных о риске инсульта из CSV-файла с помощью `pandas`.
1. Преобразование категориальных данных в числовые с помощью метода `map`.
1. Определение признаков и целевой переменной.
1. Разделение данных на обучающую и тестовую выборки с помощью функции `train_test_split` из `sklearn.model_selection`. 20% данных выделяются для тестового набора, а остальные 80% - для обучающего.
1. Создание модели классификации на основе алгоритма решающего дерева с помощью `DecisionTreeClassifier` из `sklearn.tree`.
1. Обучение модели с использованием обучающего набора данных.
1. Вычисление важности признаков для модели. Это делается с помощью атрибута `feature_importances_` модели.
1. Вычисление 'Accuracy' модели с использованием функции `accuracy_score` из `sklearn.metrics`.
1. Вычисление средней квадратичной ошибки с использованием функции `mean_squared_error` из `sklearn.metrics`.
1. Вывод результатов, включая первые 10 строк данных, важность признаков, точность модели и среднюю квадратичную ошибку.
### Решение
<u>Часть 1.</u>
![img.png](public/img/img_0.png)
<u>Часть 2.</u>
![img_1.png](public/img/img_1.png)
### Вывод
Исходя из выводимых результатов, можно сделать вывод, что:
* Значения в массиве `[0.25588112 0.40781287 0.24234788 0.09395812]` соответствуют признакам `hypertension`, `heart_disease`, `ever_married` и `gender` соответственно. Значение `0.40781287` указано для `heart_disease`, что означает, что этот признак является наиболее важным для прогнозирования результата. Признак `hypertension` следует за ним с важностью `0.25588112`, `ever_married` - `0.24234788`, и `gender` - `0.09395812`. Это означает, что `heart_disease` влияет на прогноз больше всего, `hypertension` и `ever_married` влияют на прогноз в средней степени, а `gender` влияет на прогноз меньше всего.
* Accuracy модели составляет 94%, что означает, что модель правильно классифицировала 94% примеров из тестового набора данных. Это хороший показатель, который указывает на то, что модель хорошо справляется с задачей классификации.
* Средняя квадратичная ошибка составляет 6.07%, что является достаточно хорошим показателем для модели. Меньшее значение MSE указывает на то, что прогнозы модели в среднем близки к истинным значениям.