IIS_2023_1/simonov_nikita_lab_6/readme.md

112 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лабораторная работа №6 Вариант 25.
## Задание
Общее задание: Использовать нейронную сеть MLPClassifier, самостоятельно сформулировав задачу.
Задача регрессии: Прогнозирования спроса на аренду велосипедов на основе данных о погоде и днях недели.
Ссылка на набор даных: [kaggle-bike-sharing-system](https://www.kaggle.com/datasets/itssuru/bike-sharing-system-washington-dc/?select=train_bikes.csv)
## Содержание
- [Лабораторная работа №6 Вариант 25.](#лабораторная-работа-6-вариант-25)
- [Задание](#задание)
- [Содержание](#содержание)
- [Введение](#введение)
- [Зависимости](#зависимости)
- [Запуск приложения](#запуск-приложения)
- [Описание кода](#описание-кода)
- [Заключение](#заключение)
- [Оценка работы моделей](#оценка-работы-моделей)
- [На основе анализа можно сделать следующие выводы:](#на-основе-анализа-можно-сделать-следующие-выводы)
- [Общий вывод](#общий-вывод)
## Введение
Данный код демонстрирует, использует классификатор MLP (Многослойный Персептрон) из библиотеки scikit-learn для прогнозирования количества арендованных велосипедов на основе различных признаков.
## Зависимости
Для работы этого приложения необходимы следующие библиотеки Python:
- pandas
- scikit-learn
- NumPy
- Matplotlib
- seaborn
Вы можете установить их с помощью pip:
```bash
pip install numpy scikit-learn pandas matplotlib seaborn
```
## Запуск приложения
Чтобы запустить эту программу, выполните следующую команду:
```bash
python lab6.py
```
Откроется визуализация данных и в консоль выведется резудьтат.
## Описание кода
- Загрузка данных из файла train_bikes.csv с использованием библиотеки pandas. Пропущенные значения удаляются из набора данных.
- Формирование бинарных признаков 'is_holiday' и 'is_workingday' на основе столбцов 'holiday' и 'workingday'.
- Выбор признаков: 'weather', 'temp', 'humidity', 'is_holiday', 'is_workingday'. Целевая переменная: 'count'.
- Разделение данных на обучающий, валидационный и тестовый наборы.
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
- Создание и обучение модели MLPClassifier с использованием обучающего набора.
```python
model = MLPClassifier(
hidden_layer_sizes=(500,),
activation='relu',
solver='adam',
alpha=0.01,
max_iter=100,
random_state=42,
verbose=True,
)
model.fit(X_train, y_train)
```
- Предсказание значений на тестовом наборе и оценка точности модели.
```python
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f'Оценка точности: {accuracy*100:.2f}%')
```
- Визуализация результатов с использованием библиотеки seaborn.
## Заключение
### Оценка работы моделей
```bash
Оценка точности: 1.56%
```
![](result.png)
### На основе анализа можно сделать следующие выводы:
1. Коэффициенты линейной регрессии:
- Точность модели на тестовом наборе данных низкая (1.56%). Это может свидетельствовать о том, что выбранные признаки и параметры модели не достаточно хорошо описывают зависимость от целевой переменной.
2. Визуализация результатов позволяет визуально сравнить фактическое и предсказанное количество арендованных велосипедов.
### Общий вывод
Модель MLPClassifier, основанная на погодных условиях и днях недели, демонстрирует низкую точность.