лаба 3 реади

This commit is contained in:
DmitriyAntonov 2023-10-08 10:49:00 +04:00
parent a847058d44
commit 401a5454ee
5 changed files with 86 additions and 1 deletions

View File

@ -0,0 +1,85 @@
# Лаб 3
Деревья решений
Часть 1. По данным о пассажирах Титаника решите задачу классификации
(с помощью дерева решений), в которой по различным характеристикам
пассажиров требуется найти у выживших пассажиров два наиболее важных
признака из трех рассматриваемых (по варианту). Пример решения задачи
можно посмотреть здесь: [1] (стр.188). Скачать данные можно по ссылке:
https://www.kaggle.com/datasets/heptapod/titanic
Часть 2. Решите с помощью библиотечной реализации дерева решений
задачу из лабораторной работы «Веб-сервис «Дерево решений» по предмету
«Методы искусственного интеллекта» на 99% ваших данных. Проверьте
работу модели на оставшемся проценте, сделайте вывод.
# Вариант 3
Признаки Sex,Age,SibSp
# Запуск
Выполнением скрипта файла (вывод в консоль).
# Описание модели:
DecisionTreeClassifier - это алгоритм машинного обучения, используемый для задач классификации и регрессии.
Он представляет собой дерево решений, где на каждом узле дерева решается, какой вопрос задать дальше
(признак для дальнейшего разбиения данных), а в листьях находятся окончательные ответы.
# Результаты
На данных для Титаника модель определяет важность признаков с точность 75% (исключает 'sibsp').
Эти два признака обладают статистической важностью.
<p>
<div>Титаник</div>
<img src="screens/titanic.png" width="650" title="Титаник 1">
</p>
На данных моего датасета модель справляется на 52.768%, если в качестве предлагаемых параметров
на вход идут ['Gender', 'Debtor', 'International'] (исключает 'International').
<p>
<div>Мой датасет 1</div>
<img src="screens/mydataset1.png" width="650" title="Мой датасет 1">
</p>
И на 70.961, если на вход идут ['Gender', 'Debtor', 'Curricular units 2nd sem (approved)']
(исключает 'Gender').
<p>
<div>Мой датасет 2</div>
<img src="screens/mydataset2.png" width="650" title="Мой датасет 2">
</p>
Такой результат можно объяснить большей значимостью признака 'Curricular units 2nd sem (approved)'
вместо 'International' (было показано в предыдущей лабораторной).
Из-за того, что мы взяли статистически более значимый признак, модель выдает нам большую точность.
Точность 52.768% указывает на то, что модель работает на уровне случайности, что означает, что она
работает не лучше, чем случайное угадывание. Для этого может быть несколько причин:
1. Признаки все имеет малое значение: то есть для сравнения подаются признаки статистически малозначимые.
2. Недостаточно данных: Набор данных может содержать недостаточно информации или примеров для
изучения моделью. Если набор данных невелик или нерепрезентативен, модель, возможно, не сможет
хорошо обобщить новые данные.
3. Несбалансированные классы: Если классы в вашей целевой переменной несбалансированы
(например, случаев, не связанных с отсевом, гораздо больше, чем случаев отсева), модель может
быть смещена в сторону прогнозирования класса большинства.
4. Переобучение: Модель может быть переобучена обучающими данным, что означает, что она изучает шум
в данных, а не лежащие в их основе закономерности. Это может произойти, если модель слишком сложна по
сравнению с объемом доступных данных.
5. Недостаточное соответствие: С другой стороны, модель может быть слишком простой, чтобы отразить
взаимосвязи в данных. Важно выбрать соответствующий уровень сложности модели.
<div>
При отборе признаков должна учитываться их статистическая значимость, вычисленная различными способами
(например с помощью лин регрессии, Random Forest Regressor, линейной корреляции f_regression или других).
Так же должно быть достаточно данных, в модели должно быть сведено к минимуму переобучение.
</div>

View File

@ -8,7 +8,7 @@ data = pd.read_csv('dataset.csv')
# определение признаков # определение признаков
# целевая переменная - Target # целевая переменная - Target
X = data[['Gender', 'Debtor', 'International']] X = data[['Gender', 'Debtor', 'Curricular units 2nd sem (approved)']]
y = data['Target'] # Assuming 'Dropout' is the target variable y = data['Target'] # Assuming 'Dropout' is the target variable
# разделили данные на тренировочную и тестовую выборки # разделили данные на тренировочную и тестовую выборки

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB