IIS_2023_1/simonov_nikita_lab_5/readme.md

7.5 KiB
Raw Blame History

Лабораторная работа №5 Вариант 25.

Задание

Общее задание: Использовать линейную регрессию, самостоятельно сформулировав задачу.

Задача регрессии: Как влажность (Humidity) и скорость ветра (windspeed) влияют на количество арендованных велосипедов?

Ссылка на набор даных: kaggle-bike-sharing-system

Содержание

Введение

Данный код демонстрирует, использование линейной регрессии для анализа влияния влажности (humidity) и скорости ветра (windspeed) на количество арендованных велосипедов.

Зависимости

Для работы этого приложения необходимы следующие библиотеки Python:

  • pandas
  • scikit-learn
  • NumPy
  • Matplotlib

Вы можете установить их с помощью pip:

pip install numpy scikit-learn pandas matplotlib

Запуск приложения

Чтобы запустить эту программу, выполните следующую команду:

python lab5.py

Откроется визуализация данных и в консоль выведется резудьтат.

Описание кода

  • Используется библиотека pandas для чтения данных из файла train_bikes.csv, пропущенные значения удаляются из набора данных.

  • Выделяются признаки humidity и windspeed и целевая переменная count.

  • Используется SimpleImputer для замены пропущенных значений средними значениями.

  • Данные разделяются на обучающий, валидационный и тестовый наборы с использованием train_test_split.

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)
  • Инициализируется и обучается модель линейной регрессии на обучающем наборе.
linear_model = LinearRegression()
linear_model.fit(X_train, y_train)
  • Выводятся коэффициенты и пересечение линейной регрессии.
print(f'Коэффициенты линейной регрессии: {linear_model.coef_}')
print(f'Пересечение линейной регрессии: {linear_model.intercept_}')
  • Модель применяется для предсказания значений на тестовом наборе.
y_pred = linear_model.predict(X_test)
  • Вычисляются R^2 на обучающем, валидационном и тестовом наборах. Вычисляется среднеквадратичная ошибка (MSE) и корень из среднеквадратичной ошибки (RMSE).
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)
  • Визуализация предсказаний

Заключение

Оценка работы моделей

Коэффициенты линейной регрессии: [-2.89204789  0.09562289]
Пересечение линейной регрессии: 368.16350038517544     
R^2 на обучающем наборе: 0.09485704260674943
R^2 на валидационном наборе: 0.11424344387927587       
R^2 на тестовом наборе: 0.10376993874162632
Среднеквадратичная ошибка: 28561.64598031308
Корень из среднеквадратичной ошибки: 169.00191117355175

На основе анализа можно сделать следующие выводы:

  1. Коэффициенты линейной регрессии:
  • Влажность (humidity): Отрицательный коэффициент говорит о том, что уменьшение количества арендованных велосипедов связано с увеличением влажности.
  • Скорость ветра (windspeed): Положительный коэффициент указывает на то, что увеличение количества арендованных велосипедов связано с увеличение скорости ветра. Однако, этот эффект малозначителен.
  1. Оценка модели:
  • R^2 (Коэффициент детерминации): Низкие значения R^2 (около 0.1) свидетельствуют о том, что выбранные признаки слабо объясняют изменение целевой переменной.
  • Среднеквадратичная ошибка (MSE): Высокое значение MSE (28561.65) указывает на значительное расхождение между фактическими и предсказанными значениями.
  1. Визуализация:
  • График предсказанных и фактических значений показывает, что модель не идеально подходит под данные. Разброс предсказаний велик.

Общий вывод

Модель линейной регрессии, основанная на влажности и скорости ветра, демонстрирует невысокую объясняющую способность (низкие значения R^2) и высокую среднеквадратичную ошибку. Это может свидетельствовать о том, что выбранные признаки недостаточно хорошо описывают зависимость от целевой переменной (количества арендованных велосипедов). Возможно, для более точного предсказания следует рассмотреть другие признаки или использовать более сложные модели.