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%), что свидетельствует о ее общей эффективности в предсказании категорий спроса на велосипеды.
|