10 KiB
IIS_2023_1
Задание
Часть 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
Стек технологий
Python
: v. 3.11Sklearn
- библиотека, которая поддерживает различные методы регрессии и классификации, включая линейную регрессию, метод k-ближайших соседей, регрессию опорных векторов, деревья принятия решений, ансамбль методов, такие как random forest и градиентный бустингPandas
- библиотека, которая позволяет работать с двумерными и многомерными таблицами, строить сводные таблицы, выделять колонки, использовать фильтры по параметрам, выполнять группировку по параметрам, запускать функции (сложение, нахождение медианы, среднего, минимального, максимального значений), объединять таблицы и многое другое
Описание кода
Часть 1.
-
Импорт необходимых библиотек и модулей:
pandas
для работы с данными,train_test_split
изsklearn.model_selection
для разделения данных на обучающий и тестовый наборы,DecisionTreeClassifier
изsklearn.tree
для создания модели классификации, иLabelEncoder
изsklearn.preprocessing
для преобразования категориальных данных в числовые,scikit-learn.org
. -
Загрузка данных о пассажирах на "Титанике" из CSV-файла с помощью
pandas
. -
Обработка пропущенных значений в столбце 'Embarked', заменяя их на 'S'.
-
Преобразование категориальных данных в числовые с помощью
LabelEncoder
. Это делается для столбцов 'Pclass', 'Cabin' и 'Embarked'. -
Вывод первых 10 записей из обработанного набора данных.
-
Разделение данных на признаки (X) и целевую переменную (y).
-
Разделение данных на обучающий и тестовый наборы с помощью функции
train_test_split
изsklearn.model_selection
. 20% данных выделяются для тестового набора, а остальные 80% - для обучающего. -
Создание модели классификации на основе алгоритма решающего дерева с помощью
DecisionTreeClassifier
изsklearn.tree
. -
Обучение модели с использованием обучающего набора данных.
-
Вычисление и вывод важности признаков для модели. Это делается с помощью атрибута
feature_importances_
модели.
Часть 2.
-
Импорт необходимых библиотек и модулей:
pandas
для работы с данными,accuracy_score
иmean_squared_error
изsklearn.metrics
для вычисления метрик модели,train_test_split
изsklearn.model_selection
для разделения данных на обучающий и тестовый наборы, иDecisionTreeClassifier
изsklearn.tree
для создания модели классификации. -
Загрузка данных о риске инсульта из CSV-файла с помощью
pandas
. -
Преобразование категориальных данных в числовые с помощью метода
map
. -
Определение признаков и целевой переменной.
-
Разделение данных на обучающую и тестовую выборки с помощью функции
train_test_split
изsklearn.model_selection
. 20% данных выделяются для тестового набора, а остальные 80% - для обучающего. -
Создание модели классификации на основе алгоритма решающего дерева с помощью
DecisionTreeClassifier
изsklearn.tree
. -
Обучение модели с использованием обучающего набора данных.
-
Вычисление важности признаков для модели. Это делается с помощью атрибута
feature_importances_
модели. -
Вычисление 'Accuracy' модели с использованием функции
accuracy_score
изsklearn.metrics
. -
Вычисление средней квадратичной ошибки с использованием функции
mean_squared_error
изsklearn.metrics
. -
Вывод результатов, включая первые 10 строк данных, важность признаков, точность модели и среднюю квадратичную ошибку.
Решение
Часть 1.
Часть 2.
Вывод
Часть 1.
Исходя из выводимых результатов, можно сделать вывод, что:
-
Признак 0: Значение
0.36399999535331234
указывает на то, что признак 0 (в данном случае 'PassengerId') имеет важность 36.4%. Это означает, что признак 'PassengerId' вносит меньший вклад в прогноз, по сравнению с другими признаками. -
Признак 1: Значение
0.5373525457492807
указывает на то, что признак 1 (в данном случае 'Pclass') имеет важность 53.7%. Это означает, что признак 'Pclass' играет более значимую роль в прогнозе, по сравнению с признаком 'PassengerId'. -
Признак 2: Значение
0.09864745889740695
указывает на то, что признак 2 (в данном случае 'Cabin') имеет важность 9.9%. Это означает, что признак 'Cabin' вносит наименьший вклад в прогноз, по сравнению с другими признаками.
Часть 2.
Исходя из выводимых результатов, можно сделать вывод, что:
- Значения в массиве
[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 указывает на то, что прогнозы модели в среднем близки к истинным значениям.