IIS_2023_1/simonov_nikita_lab_3
2023-11-29 19:36:57 +04:00
..
lab3.py lab3 2023-11-29 19:36:57 +04:00
readme.md lab3 2023-11-29 19:36:57 +04:00
train_bikes.csv lab3 2023-11-29 19:36:57 +04:00

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