# Лабораторная работа №5 Вариант 25. ## Задание Общее задание: Использовать линейную регрессию, самостоятельно сформулировав задачу. Задача регрессии: Как влажность (Humidity) и скорость ветра (windspeed) влияют на количество арендованных велосипедов? Ссылка на набор даных: [kaggle-bike-sharing-system](https://www.kaggle.com/datasets/itssuru/bike-sharing-system-washington-dc/?select=train_bikes.csv) ## Содержание - [Лабораторная работа №5 Вариант 25.](#лабораторная-работа-5-вариант-25) - [Задание](#задание) - [Содержание](#содержание) - [Введение](#введение) - [Зависимости](#зависимости) - [Запуск приложения](#запуск-приложения) - [Описание кода](#описание-кода) - [Заключение](#заключение) - [Оценка работы моделей](#оценка-работы-моделей) - [На основе анализа можно сделать следующие выводы:](#на-основе-анализа-можно-сделать-следующие-выводы) - [Общий вывод](#общий-вывод) ## Введение Данный код демонстрирует, использование линейной регрессии для анализа влияния влажности (humidity) и скорости ветра (windspeed) на количество арендованных велосипедов. ## Зависимости Для работы этого приложения необходимы следующие библиотеки Python: - pandas - scikit-learn - NumPy - Matplotlib Вы можете установить их с помощью pip: ```bash pip install numpy scikit-learn pandas matplotlib ``` ## Запуск приложения Чтобы запустить эту программу, выполните следующую команду: ```bash python lab5.py ``` Откроется визуализация данных и в консоль выведется резудьтат. ## Описание кода - Используется библиотека `pandas` для чтения данных из файла `train_bikes.csv`, пропущенные значения удаляются из набора данных. - Выделяются признаки `humidity` и `windspeed` и целевая переменная `count`. - Используется `SimpleImputer` для замены пропущенных значений средними значениями. - Данные разделяются на обучающий, валидационный и тестовый наборы с использованием `train_test_split`. ```python X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.4, random_state=0) X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=0) ``` - Инициализируется и обучается модель линейной регрессии на обучающем наборе. ```python linear_model = LinearRegression() linear_model.fit(X_train, y_train) ``` - Выводятся коэффициенты и пересечение линейной регрессии. ```python print(f'Коэффициенты линейной регрессии: {linear_model.coef_}') print(f'Пересечение линейной регрессии: {linear_model.intercept_}') ``` - Модель применяется для предсказания значений на тестовом наборе. ```python y_pred = linear_model.predict(X_test) ``` - Вычисляются R^2 на обучающем, валидационном и тестовом наборах. Вычисляется среднеквадратичная ошибка (MSE) и корень из среднеквадратичной ошибки (RMSE). ```python train_score = linear_model.score(X_train, y_train) val_score = linear_model.score(X_val, y_val) test_score = linear_model.score(X_test, y_test) MSE = mean_squared_error(y_test, y_pred) RMSE = math.sqrt(MSE) ``` - Визуализация предсказаний ## Заключение ### Оценка работы моделей ```bash Коэффициенты линейной регрессии: [-2.89204789 0.09562289] Пересечение линейной регрессии: 368.16350038517544 R^2 на обучающем наборе: 0.09485704260674943 R^2 на валидационном наборе: 0.11424344387927587 R^2 на тестовом наборе: 0.10376993874162632 Среднеквадратичная ошибка: 28561.64598031308 Корень из среднеквадратичной ошибки: 169.00191117355175 ``` ![](result.png) ### На основе анализа можно сделать следующие выводы: 1. Коэффициенты линейной регрессии: - Влажность (humidity): Отрицательный коэффициент говорит о том, что уменьшение количества арендованных велосипедов связано с увеличением влажности. - Скорость ветра (windspeed): Положительный коэффициент указывает на то, что увеличение количества арендованных велосипедов связано с увеличение скорости ветра. Однако, этот эффект малозначителен. 1. Оценка модели: - R^2 (Коэффициент детерминации): Низкие значения R^2 (около 0.1) свидетельствуют о том, что выбранные признаки слабо объясняют изменение целевой переменной. - Среднеквадратичная ошибка (MSE): Высокое значение MSE (28561.65) указывает на значительное расхождение между фактическими и предсказанными значениями. 3. Визуализация: - График предсказанных и фактических значений показывает, что модель не идеально подходит под данные. Разброс предсказаний велик. ### Общий вывод Модель линейной регрессии, основанная на влажности и скорости ветра, демонстрирует невысокую объясняющую способность (низкие значения R^2) и высокую среднеквадратичную ошибку. Это может свидетельствовать о том, что выбранные признаки недостаточно хорошо описывают зависимость от целевой переменной (количества арендованных велосипедов). Возможно, для более точного предсказания следует рассмотреть другие признаки или использовать более сложные модели.