101 lines
6.2 KiB
Markdown
101 lines
6.2 KiB
Markdown
# Лабораторная работа №3.
|
||
|
||
## Задание
|
||
|
||
Общее задание: Решите с помощью библиотечной реализации дерева решений задачу из лабораторной работы «Веб-сервис «Дерево решений» по предмету «Методы искусственного интеллекта» на 99% ваших данных. Проверьте работу модели на оставшемся проценте, сделайте вывод.
|
||
|
||
По данным курсовой работы с помощью дерева решений решить выбранную задачу классификации: Прогнозирование использования велосипедов в зависимости от времени и погодных условий.
|
||
|
||
## Содержание
|
||
- [Лабораторная работа №3.](#лабораторная-работа-3)
|
||
- [Задание](#задание)
|
||
- [Содержание](#содержание)
|
||
- [Введение](#введение)
|
||
- [Зависимости](#зависимости)
|
||
- [Запуск приложения](#запуск-приложения)
|
||
- [Описание кода](#описание-кода)
|
||
- [Заключение](#заключение)
|
||
- [Оценка работы моделей](#оценка-работы-моделей)
|
||
- [Общий вывод](#общий-вывод)
|
||
|
||
## Введение
|
||
|
||
Данный код демонстрирует, прогнозирование спроса на основе классификатора дерева решений. Модель обучается на наборе данных `train_bikes.csv`, содержащем информацию о прокате велосипедов, а целевая переменная - категория спроса, классифицированная как "Низкий спрос", "Средний спрос" или "Высокий спрос".
|
||
|
||
## Зависимости
|
||
|
||
Для работы этого приложения необходимы следующие библиотеки Python:
|
||
|
||
- pandas
|
||
- scikit-learn
|
||
- NumPy
|
||
|
||
Вы можете установить их с помощью pip:
|
||
|
||
```bash
|
||
pip install numpy scikit-learn pandas
|
||
```
|
||
|
||
## Запуск приложения
|
||
|
||
Чтобы запустить эту программу, выполните следующую команду:
|
||
|
||
```bash
|
||
python lab3.py
|
||
```
|
||
В консоль выведется резудьтат.
|
||
|
||
## Описание кода
|
||
|
||
- Считывает данные о прокате велосипедов из CSV-файла `train_bikes.csv` и обрабатывает отсутствующие значения, удаляя соответствующие строки.
|
||
|
||
- Подготовка данных: Задает пороги для категорий спроса (`low_demand_threshold` и `medium_demand_threshold`) и создает новую категориальную переменную `demand_category` на основе этих порогов.
|
||
|
||
```python
|
||
data['demand_category'] = pd.cut(data['count'], bins=[0, low_demand_threshold, medium_demand_threshold, float('inf')],
|
||
labels=["Low Demand", "Medium Demand", "High Demand"])
|
||
```
|
||
|
||
- Извлекает признаки и целевую переменную. Признаки включают различные атрибуты, связанные с прокатом велосипедов, а целевая переменная - категория спроса.
|
||
|
||
```python
|
||
X = data.drop(['count', 'demand_category', 'datetime'], axis=1) # Удаление ненужных столбцов
|
||
y = data['demand_category']
|
||
```
|
||
|
||
- Разбивает набор данных на обучающий и тестовый наборы с использованием функции `train_test_split` из библиотеки `scikit-learn`.
|
||
|
||
- Создает классификатор дерева решений `DecisionTreeClassifier` и обучает его на обучающих данных.
|
||
|
||
- Прогнозирование: Использует обученную модель для прогнозирования категорий спроса на тестовом наборе.
|
||
|
||
- Оценка модели: Рассчитывает точность модели с использованием функции `accuracy_score` и предоставляет подробный отчет о классификации, включая точность, полноту и F1-меру для каждой категории спроса.
|
||
|
||
## Заключение
|
||
|
||
### Оценка работы моделей
|
||
|
||
Обученный классификатор дерева решений достиг точности 0.99 на тестовом наборе данных. Отчет о классификации предоставляет детальное описание производительности модели для каждой категории спроса:
|
||
|
||
```bash
|
||
precision recall f1-score support
|
||
|
||
High Demand 0.99 0.98 0.99 483
|
||
Low Demand 0.99 1.00 1.00 852
|
||
Medium Demand 0.99 0.99 0.99 843
|
||
|
||
accuracy 0.99 2178
|
||
macro avg 0.99 0.99 0.99 2178
|
||
weighted avg 0.99 0.99 0.99 2178
|
||
|
||
```
|
||
|
||
|
||
|
||
### Общий вывод
|
||
|
||
- Модель показывает высокую точность, recall и F1-score для всех категорий спроса, что свидетельствует о хорошем качестве предсказаний.
|
||
|
||
- Precision, recall и F1-score близки к 1 для каждой категории, что указывает на эффективность модели в каждом классе.
|
||
|
||
- Общая точность (accuracy) модели также высока (99%), что свидетельствует о ее общей эффективности в предсказании категорий спроса на велосипеды. |