diff --git a/shadaev_anton_lab_3/README.md b/shadaev_anton_lab_3/README.md index eb74c95..b387d4c 100644 --- a/shadaev_anton_lab_3/README.md +++ b/shadaev_anton_lab_3/README.md @@ -1,23 +1,76 @@ # IIS_2023_1 -

Задание

-

-Часть 1. По данным о пассажирах Титаника решите задачу классификации -(с помощью дерева решений), в которой по различным характеристикам -пассажиров требуется найти у выживших пассажиров два наиболее важных -признака из трех рассматриваемых (по варианту). Пример решения задачи -можно посмотреть здесь: [1] (стр.188). Скачать данные можно по ссылке: -https://www.kaggle.com/datasets/heptapod/titanic

-9. Pclass, Cabin,Embarked 10 Name, Cabin,Embarked -

-

-Часть 2. Решите с помощью библиотечной реализации дерева решений -задачу из лабораторной работы «Веб-сервис «Дерево решений» по предмету -«Методы искусственного интеллекта» на 99% ваших данных. Проверьте -работу модели на оставшемся проценте, сделайте вывод. -

-

-

Способок запуска программы

-

Описание кода

-
Результат:
-

-

\ No newline at end of file +### Задание +Часть 1. По данным о пассажирах Титаника решите задачу классификации (с помощью дерева решений), в которой по различным характеристикам пассажиров требуется найти у выживших пассажиров два наиболее важных признака из трех рассматриваемых (по варианту). Пример решения задачи можно посмотреть здесь: [1] (стр.188). Скачать данные можно по ссылке: https://www.kaggle.com/datasets/heptapod/titanic + +9 Вариант. Pclass, Cabin,Embarked 10 Name, Cabin,Embarked + +Часть 2. Решите с помощью библиотечной реализации дерева решений задачу из лабораторной работы «Веб-сервис «Дерево решений» по предмету «Методы искусственного интеллекта» на 99% ваших данных. Проверьте работу модели на оставшемся проценте, сделайте вывод +### Способ запуска лабораторной работы +Чтобы запустить 1-ю часть лабораторной работы, нужно запустить скрипт `shadaev_anton_lab_3/titanic.py` + +Чтобы запустить 2-ю часть лабораторной работы, нужно запустить скрипт `shadaev_anton_lab_3/stroke_prediction.py` + +### Стек технологий +* `Sklearn` - библиотека, которая поддерживает различные методы регрессии и классификации, включая линейную регрессию, метод k-ближайших соседей, регрессию опорных векторов, деревья принятия решений, ансамбль методов, такие как random forest и градиентный бустинг +* `Pandas` - библиотека, которая позволяет работать с двумерными и многомерными таблицами, строить сводные таблицы, выделять колонки, использовать фильтры по параметрам, выполнять группировку по параметрам, запускать функции (сложение, нахождение медианы, среднего, минимального, максимального значений), объединять таблицы и многое другое +### Описание кода +Часть 1. + +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_ `модели. + + +Часть 2. + +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 строк данных, важность признаков, точность модели и среднюю квадратичную ошибку. + +### Решение +Часть 1. +![img.png](public/img/img_0.png) + +Часть 2. +![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 указывает на то, что прогнозы модели в среднем близки к истинным значениям. \ No newline at end of file diff --git a/shadaev_anton_lab_3/public/img/img_0.png b/shadaev_anton_lab_3/public/img/img_0.png new file mode 100644 index 0000000..3e2bdaa Binary files /dev/null and b/shadaev_anton_lab_3/public/img/img_0.png differ diff --git a/shadaev_anton_lab_3/public/img/img_1.png b/shadaev_anton_lab_3/public/img/img_1.png new file mode 100644 index 0000000..26f2e26 Binary files /dev/null and b/shadaev_anton_lab_3/public/img/img_1.png differ