.. | ||
lab3.py | ||
readme.md | ||
train_bikes.csv |
Лабораторная работа №3.
Задание
Общее задание: Решите с помощью библиотечной реализации дерева решений задачу из лабораторной работы «Веб-сервис «Дерево решений» по предмету «Методы искусственного интеллекта» на 99% ваших данных. Проверьте работу модели на оставшемся проценте, сделайте вывод.
По данным курсовой работы с помощью дерева решений решить выбранную задачу классификации: Прогнозирование использования велосипедов в зависимости от времени и погодных условий.
Содержание
Введение
Данный код демонстрирует, прогнозирование спроса на основе классификатора дерева решений. Модель обучается на наборе данных train_bikes.csv
, содержащем информацию о прокате велосипедов, а целевая переменная - категория спроса, классифицированная как "Низкий спрос", "Средний спрос" или "Высокий спрос".
Зависимости
Для работы этого приложения необходимы следующие библиотеки Python:
- pandas
- scikit-learn
- NumPy
Вы можете установить их с помощью pip:
pip install numpy scikit-learn pandas
Запуск приложения
Чтобы запустить эту программу, выполните следующую команду:
python lab3.py
В консоль выведется резудьтат.
Описание кода
-
Считывает данные о прокате велосипедов из CSV-файла
train_bikes.csv
и обрабатывает отсутствующие значения, удаляя соответствующие строки. -
Подготовка данных: Задает пороги для категорий спроса (
low_demand_threshold
иmedium_demand_threshold
) и создает новую категориальную переменнуюdemand_category
на основе этих порогов.
data['demand_category'] = pd.cut(data['count'], bins=[0, low_demand_threshold, medium_demand_threshold, float('inf')],
labels=["Low Demand", "Medium Demand", "High Demand"])
- Извлекает признаки и целевую переменную. Признаки включают различные атрибуты, связанные с прокатом велосипедов, а целевая переменная - категория спроса.
X = data.drop(['count', 'demand_category', 'datetime'], axis=1) # Удаление ненужных столбцов
y = data['demand_category']
-
Разбивает набор данных на обучающий и тестовый наборы с использованием функции
train_test_split
из библиотекиscikit-learn
. -
Создает классификатор дерева решений
DecisionTreeClassifier
и обучает его на обучающих данных. -
Прогнозирование: Использует обученную модель для прогнозирования категорий спроса на тестовом наборе.
-
Оценка модели: Рассчитывает точность модели с использованием функции
accuracy_score
и предоставляет подробный отчет о классификации, включая точность, полноту и F1-меру для каждой категории спроса.
Заключение
Оценка работы моделей
Обученный классификатор дерева решений достиг точности 0.99 на тестовом наборе данных. Отчет о классификации предоставляет детальное описание производительности модели для каждой категории спроса:
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%), что свидетельствует о ее общей эффективности в предсказании категорий спроса на велосипеды.