IIS_2023_1/shadaev_anton_lab_3/README.md
2023-11-03 19:48:45 +04:00

10 KiB
Raw Blame History

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.11
  • Sklearn - библиотека, которая поддерживает различные методы регрессии и классификации, включая линейную регрессию, метод k-ближайших соседей, регрессию опорных векторов, деревья принятия решений, ансамбль методов, такие как random forest и градиентный бустинг
  • Pandas - библиотека, которая позволяет работать с двумерными и многомерными таблицами, строить сводные таблицы, выделять колонки, использовать фильтры по параметрам, выполнять группировку по параметрам, запускать функции (сложение, нахождение медианы, среднего, минимального, максимального значений), объединять таблицы и многое другое

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

Часть 1.

  1. Импорт необходимых библиотек и модулей: pandas для работы с данными, train_test_split из sklearn.model_selection для разделения данных на обучающий и тестовый наборы, DecisionTreeClassifier из sklearn.tree для создания модели классификации, и LabelEncoder из sklearn.preprocessing для преобразования категориальных данных в числовые, scikit-learn.org.

  2. Загрузка данных о пассажирах на "Титанике" из CSV-файла с помощью pandas.

  3. Обработка пропущенных значений в столбце 'Embarked', заменяя их на 'S'.

  4. Преобразование категориальных данных в числовые с помощью LabelEncoder. Это делается для столбцов 'Pclass', 'Cabin' и 'Embarked'.

  5. Вывод первых 10 записей из обработанного набора данных.

  6. Разделение данных на признаки (X) и целевую переменную (y).

  7. Разделение данных на обучающий и тестовый наборы с помощью функции train_test_split из sklearn.model_selection. 20% данных выделяются для тестового набора, а остальные 80% - для обучающего.

  8. Создание модели классификации на основе алгоритма решающего дерева с помощью DecisionTreeClassifier из sklearn.tree.

  9. Обучение модели с использованием обучающего набора данных.

  10. Вычисление и вывод важности признаков для модели. Это делается с помощью атрибута feature_importances_ модели.

Часть 2.

  1. Импорт необходимых библиотек и модулей: pandas для работы с данными, accuracy_score и mean_squared_error из sklearn.metrics для вычисления метрик модели, train_test_split из sklearn.model_selection для разделения данных на обучающий и тестовый наборы, и DecisionTreeClassifier из sklearn.tree для создания модели классификации.

  2. Загрузка данных о риске инсульта из CSV-файла с помощью pandas.

  3. Преобразование категориальных данных в числовые с помощью метода map.

  4. Определение признаков и целевой переменной.

  5. Разделение данных на обучающую и тестовую выборки с помощью функции train_test_split из sklearn.model_selection. 20% данных выделяются для тестового набора, а остальные 80% - для обучающего.

  6. Создание модели классификации на основе алгоритма решающего дерева с помощью DecisionTreeClassifier из sklearn.tree.

  7. Обучение модели с использованием обучающего набора данных.

  8. Вычисление важности признаков для модели. Это делается с помощью атрибута feature_importances_ модели.

  9. Вычисление 'Accuracy' модели с использованием функции accuracy_score из sklearn.metrics.

  10. Вычисление средней квадратичной ошибки с использованием функции mean_squared_error из sklearn.metrics.

  11. Вывод результатов, включая первые 10 строк данных, важность признаков, точность модели и среднюю квадратичную ошибку.

Решение

Часть 1.

img.png

Часть 2.

img_1.png

Вывод

Часть 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 указывает на то, что прогнозы модели в среднем близки к истинным значениям.