📸 Нужно решить свою задачу?
Загрузите фото — AI решит за секунды!
school Общие знания verified Решено AI

Решение задачи регрессии: Прогноз потребления газа в США на Python

calendar_today
schedule 4 мин. чтения
visibility 1 просмотр

Изображение задачи:
Нажмите для увеличения

Представлено решение задачи регрессии для прогнозирования потребления газа в США с использованием Python и библиотек машинного обучения. Включает загрузку данных, построение модели и оценку точности.

check_circle

Подробное решение

Задача: Задание. Постройте модель регрессии для данных из предыдущей рабочей тетради. Для примера можно взять потребление газа (в миллионах галлонов) в 48 штатах США или набор данных о качестве красного вина: https://raw.githubusercontent.com/likarajo/petrol_consumption/master/data/petrol_consumption.csv https://raw.githubusercontent.com/aniruddhachoudhury/Red-Wine-Quality/master/winequality-red.csv Постройте прогноз. Оцените точность модели. Решение: Для решения этой задачи мы будем использовать язык программирования Python и библиотеки для работы с данными и машинным обучением, такие как pandas, numpy, matplotlib и scikit-learn. Выберем для примера набор данных о потреблении газа. 1. Загрузка данных Сначала нам нужно загрузить данные из указанного URL. ```python import pandas as pd url = "https://raw.githubusercontent.com/likarajo/petrol_consumption/master/data/petrol_consumption.csv" data = pd.read_csv(url) # Выведем первые 5 строк данных, чтобы убедиться, что они загружены правильно print("Первые 5 строк данных:") print(data.head()) # Выведем информацию о данных, чтобы посмотреть типы столбцов и наличие пропусков print("\nИнформация о данных:") data.info() ``` 2. Подготовка данных Для построения модели регрессии нам нужно определить зависимую переменную (то, что мы хотим предсказать) и независимые переменные (признаки, которые мы используем для предсказания). В данном наборе данных, скорее всего, "Petrol_Consumption" (потребление бензина) будет зависимой переменной. Остальные столбцы будут независимыми. ```python # Определяем зависимую и независимые переменные X = data.drop('Petrol_Consumption', axis=1) # Независимые переменные (все, кроме 'Petrol_Consumption') y = data['Petrol_Consumption'] # Зависимая переменная ('Petrol_Consumption') print("\nНезависимые переменные (X):") print(X.head()) print("\nЗависимая переменная (y):") print(y.head()) ``` 3. Разделение данных на обучающую и тестовую выборки Чтобы оценить точность модели, мы разделим данные на две части: обучающую выборку (для обучения модели) и тестовую выборку (для проверки ее работы на новых, ранее не виденных данных). ```python from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) print(f"\nРазмер обучающей выборки X_train: {X_train.shape}") print(f"Размер тестовой выборки X_test: {X_test.shape}") print(f"Размер обучающей выборки y_train: {y_train.shape}") print(f"Размер тестовой выборки y_test: {y_test.shape}") ``` 4. Построение модели регрессии Для этой задачи мы будем использовать модель линейной регрессии, так как она проста и хорошо подходит для начала. ```python from sklearn.linear_model import LinearRegression # Создаем объект модели линейной регрессии model = LinearRegression() # Обучаем модель на обучающих данных model.fit(X_train, y_train) print("\nМодель линейной регрессии обучена.") # Выведем коэффициенты модели print(f"Коэффициенты модели: {model.coef_}") print(f"Свободный член (intercept): {model.intercept_}") ``` 5. Построение прогноза Теперь, когда модель обучена, мы можем использовать ее для предсказания значений на тестовой выборке. ```python # Делаем предсказания на тестовой выборке y_pred = model.predict(X_test) print("\nПрогноз на тестовой выборке:") # Выведем первые 10 предсказанных значений и соответствующие им истинные значения results = pd.DataFrame({'Истинные значения': y_test, 'Предсказанные значения': y_pred}) print(results.head(10)) ``` 6. Оценка точности модели Для оценки точности модели регрессии используются различные метрики. Наиболее распространенные: * Средняя абсолютная ошибка (MAE - Mean Absolute Error) * Среднеквадратичная ошибка (MSE - Mean Squared Error) * Корень из среднеквадратичной ошибки (RMSE - Root Mean Squared Error) * Коэффициент детерминации (R-squared, \(R^2\)) ```python from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score import numpy as np # Рассчитываем метрики mae = mean_absolute_error(y_test, y_pred) mse = mean_squared_error(y_test, y_pred) rmse = np.sqrt(mse) r2 = r2_score(y_test, y_pred) print("\nОценка точности модели:") print(f"Средняя абсолютная ошибка (MAE): {mae:.2f}") print(f"Среднеквадратичная ошибка (MSE): {mse:.2f}") print(f"Корень из среднеквадратичной ошибки (RMSE): {rmse:.2f}") print(f"Коэффициент детерминации (R-squared): {r2:.2f}") ``` Пояснение метрик: * MAE: Среднее абсолютное значение ошибок. Чем меньше, тем лучше. * MSE: Среднее значение квадратов ошибок. Больше штрафует за большие ошибки. Чем меньше, тем лучше. * RMSE: Корень из MSE. Имеет ту же размерность, что и зависимая переменная, что делает его более интерпретируемым. Чем меньше, тем лучше. * \(R^2\): Показывает, какую долю дисперсии зависимой переменной объясняет модель. Значение от 0 до 1. Чем ближе к 1, тем лучше модель объясняет данные. 7. Визуализация результатов (необязательно, но полезно) Можно построить график, чтобы визуально сравнить истинные и предсказанные значения. ```python import matplotlib.pyplot as plt plt.figure(figsize=(10, 6)) plt.scatter(y_test, y_pred, alpha=0.7) plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'r--', lw=2) plt.xlabel("Истинные значения потребления газа") plt.ylabel("Предсказанные значения потребления газа") plt.title("Сравнение истинных и предсказанных значений") plt.grid(True) plt.show() ``` Выводы: Мы успешно построили модель линейной регрессии для предсказания потребления газа. Оценили ее точность с помощью метрик MAE, MSE, RMSE и \(R^2\). Полученные значения метрик показывают, насколько хорошо модель справляется с задачей предсказания. Например, \(R^2\) близкий к 1 говорит о том, что модель хорошо объясняет изменчивость потребления газа. Для улучшения модели можно попробовать: * Использовать другие алгоритмы регрессии (например, случайный лес, градиентный бустинг). * Провести более глубокий анализ данных (EDA - Exploratory Data Analysis) для выявления зависимостей и выбросов. * Выполнить отбор признаков (Feature Selection) или создание новых признаков (Feature Engineering). * Настроить гиперпараметры модели.
list Все задачи

Нужно решить свою задачу?

Загрузите фото или введите текст — AI решит с пошаговым объяснением!

Решите свою задачу прямо сейчас

Введите текст задачи или загрузите фото — получите ответ мгновенно

Выберите режим AI:
🚀 Pro v3
20 руб. • 99.9%
⚡ Lite v3
5 руб. • 95%
Ваш баланс: 10 руб.
Пополнить
psychology
Задайте любой вопрос
Поддерживаются текст, фото и голосовой ввод
🎉
Бонус получен!
+20 ₽
Добавлено на ваш баланс