112 lines
5.0 KiB
Markdown
112 lines
5.0 KiB
Markdown
# Лабораторная работа №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, основанная на погодных условиях и днях недели, демонстрирует низкую точность. |