Линейная регрессия в Python

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Введение в линейную регрессию

Линейная регрессия — это один из самых простых и широко используемых методов машинного обучения. Она используется для моделирования зависимости между одной зависимой переменной (целевой) и одной или несколькими независимыми переменными (фичами). Основная идея заключается в нахождении линейной зависимости, которая наилучшим образом описывает данные. Линейная регрессия часто используется в задачах прогнозирования и анализа данных.

Линейная регрессия имеет множество применений, начиная от экономических прогнозов и заканчивая медицинскими исследованиями. Например, она может быть использована для предсказания цен на жилье, уровня заработной платы, спроса на продукцию и многих других показателей. В основе линейной регрессии лежит предположение о том, что существует линейная связь между независимыми переменными и зависимой переменной. Это позволяет нам строить простые и интерпретируемые модели.

Кинга Идем в IT: пошаговый план для смены профессии

Установка и настройка необходимых библиотек

Для работы с линейной регрессией в Python нам потребуется несколько библиотек, таких как numpy, pandas, matplotlib и scikit-learn. Установить их можно с помощью команды pip:

Bash
Скопировать код
pip install numpy pandas matplotlib scikit-learn

Эти библиотеки помогут нам в обработке данных, построении модели и визуализации результатов. Numpy предоставляет поддержку для работы с массивами и матрицами, что является основой для большинства операций в машинном обучении. Pandas облегчает работу с табличными данными, предоставляя удобные структуры данных и методы для их манипуляции. Matplotlib используется для создания графиков и визуализации данных, что помогает лучше понять результаты модели. Scikit-learn является одной из самых популярных библиотек для машинного обучения в Python и предоставляет широкий набор инструментов для построения и оценки моделей.

Загрузка и подготовка данных

Прежде чем приступить к построению модели, необходимо загрузить и подготовить данные. В качестве примера возьмем набор данных о ценах на жилье. Мы будем использовать библиотеку pandas для загрузки и обработки данных.

Python
Скопировать код
import pandas as pd

# Загрузка данных
url = "https://raw.githubusercontent.com/selva86/datasets/master/BostonHousing.csv"
data = pd.read_csv(url)

# Просмотр первых строк данных
print(data.head())

Теперь, когда данные загружены, необходимо подготовить их для модели. Это включает в себя разделение данных на признаки (X) и целевую переменную (y), а также разделение на обучающую и тестовую выборки.

Python
Скопировать код
from sklearn.model_selection import train_test_split

# Разделение данных на признаки и целевую переменную
X = data.drop(columns=['medv'])
y = data['medv']

# Разделение на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Подготовка данных — это важный этап в процессе построения модели. Она включает в себя не только разделение данных на обучающую и тестовую выборки, но и предварительную обработку данных. Например, может потребоваться нормализация или стандартизация данных, удаление пропущенных значений или преобразование категориальных переменных в числовые. Все эти шаги помогают улучшить качество модели и сделать ее более устойчивой к различным типам данных.

Построение модели линейной регрессии с использованием Scikit-learn

Теперь, когда данные готовы, можно приступить к построению модели линейной регрессии. Для этого мы будем использовать библиотеку scikit-learn.

Python
Скопировать код
from sklearn.linear_model import LinearRegression

# Создание модели линейной регрессии
model = LinearRegression()

# Обучение модели на обучающей выборке
model.fit(X_train, y_train)

После обучения модели мы можем использовать ее для предсказания значений на тестовой выборке.

Python
Скопировать код
# Предсказание на тестовой выборке
y_pred = model.predict(X_test)

Процесс обучения модели включает в себя нахождение коэффициентов линейного уравнения, которые минимизируют ошибку предсказания. В случае линейной регрессии это достигается с помощью метода наименьших квадратов. После обучения модели мы можем использовать ее для предсказания значений на новых данных. Это позволяет нам оценить, насколько хорошо модель справляется с задачей и насколько точны ее предсказания.

Оценка модели и визуализация результатов

Для оценки качества модели мы будем использовать метрики, такие как среднеквадратичная ошибка (MSE) и коэффициент детерминации (R^2).

Python
Скопировать код
from sklearn.metrics import mean_squared_error, r2_score

# Оценка модели
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print(f"Среднеквадратичная ошибка (MSE): {mse}")
print(f"Коэффициент детерминации (R^2): {r2}")

Среднеквадратичная ошибка (MSE) измеряет среднее значение квадратов ошибок, то есть разницу между предсказанными и реальными значениями. Чем меньше значение MSE, тем лучше модель. Коэффициент детерминации (R^2) показывает, какую долю дисперсии зависимой переменной объясняет модель. Значение R^2 варьируется от 0 до 1, где 1 означает идеальное соответствие модели данным.

Для визуализации результатов мы можем построить график, показывающий реальные и предсказанные значения.

Python
Скопировать код
import matplotlib.pyplot as plt

plt.scatter(y_test, y_pred)
plt.xlabel("Реальные значения")
plt.ylabel("Предсказанные значения")
plt.title("Реальные vs Предсказанные значения")
plt.show()

Визуализация результатов помогает лучше понять, насколько хорошо модель справляется с задачей. График, показывающий реальные и предсказанные значения, позволяет увидеть, насколько близки предсказания модели к реальным значениям. Это может помочь выявить возможные проблемы с моделью, такие как переобучение или недообучение, и принять меры для их устранения.

Таким образом, мы построили модель линейной регрессии, оценили ее качество и визуализировали результаты. Линейная регрессия — это мощный инструмент для анализа данных и прогнозирования, и с помощью Python и библиотек, таких как scikit-learn, ее можно легко реализовать и использовать в различных задачах. Важно помнить, что успех модели зависит не только от выбранного алгоритма, но и от качества данных и их предварительной обработки. Поэтому всегда уделяйте внимание подготовке данных и выбору подходящих метрик для оценки модели.

Читайте также