Введение

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

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

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

Установка пакетов Python для линейной регрессии

Чтобы начать работу с линейной регрессией в Python, нам сначала нужно установить некоторые пакеты Python, которые сделают наше моделирование более эффективным, это хорошо известные и наиболее часто используемые пакеты в отрасли.

  • Scikit-learn. Scikit-learn — популярная и удобная библиотека для машинного обучения на Python. Он предоставляет широкий спектр инструментов и алгоритмов, упрощающих разработчикам создание моделей машинного обучения. С помощью scikit-learn вы можете выполнять такие задачи, как предварительная обработка данных, выбор функций, обучение модели и оценка, без необходимости писать сложный код с нуля. Посетите сайт scikit-learn, чтобы узнать больше.
  • NumPy: Numpy — это мощная библиотека на Python, которая помогает нам работать с массивами и эффективно выполнять математические операции. Это похоже на усиленную версию обычных списков Python. С Numpy вы можете с легкостью обрабатывать числа, манипулировать массивами и выполнять сложные вычисления. Посетите документы NumPy для получения дополнительной информации.
  • Matplotlib:Matplotlib — это универсальная библиотека для построения графиков, которая позволяет создавать широкий спектр визуализаций. С помощью Matplotlib вы можете создавать линейные графики, точечные графики, гистограммы, гистограммы и многое другое. Он обеспечивает высокую степень настройки, позволяя вам контролировать каждый аспект ваших графиков, включая цвета, метки, заголовки и оси. Посетите Документацию Matplotlib.

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

pip3 install numpy scikit-learn matplotlib

Если вы закончили установку необходимых библиотек, давайте сразу перейдем к руководству по внедрению!

Шаг 1: Импорт библиотек Python

Чтобы использовать те библиотеки, которые мы только что загрузили, нам нужно сначала импортировать их в наш код Python, вы можете сделать это, написав эти строки кода в своем файле Python или блокноте:

import numpy as np 
import matplotlib.pyplot as plt 
from sklearn.model_selection import train_test_split 
from sklearn.linear_model import LinearRegression 
from sklearn.metrics import mean_squared_error, r2_score

Шаг 2: Чтение точек данных

Генерация некоторых случайных точек данных с помощью numpy с использованием следующего кода

# Set a random seed for reproducibility
np.random.seed(42)

# Generate the dataset
X = np.random.rand(100, 1)
y = 2 + 3 * X + np.random.randn(100, 1)

Шаг 3: разделение наших данных обучения и тестирования

Train Test Split важен, потому что мы хотим, чтобы некоторые данные были отложены для тестирования позже. Мы получаем представление о производительности нашей модели на тренировочном наборе и наборе тестов, чтобы помочь нам в этом train_test_split от sklearn.

# Sperate train and test data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

В приведенном выше коде мы указали train_test_split наш набор данных, наши цели и размер теста, который составляет 20% от общего набора данных.

Шаг 4: инициализация нашей модели линейной регрессии

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

# Linear regression model object creation 
model = LinearRegression()

Теперь, после инициализации нашей модели, мы подгоним наши данные X_train и y_train, чтобы модель обучалась на них.

# Train the model on the training dataset 
model.fit(X_train, y_train)

Итак, как вы можете догадаться, наша модель теперь обучена на экземплярах, которые мы предоставили в предыдущем коде, пришло время для прогнозов.

# Make predictions on the training and testing datasets 
y_train_pred = model.predict(X_train) 
y_test_pred = model.predict(X_test)

Метод .predict() делает прогнозы для экземпляров, переданных в качестве аргументов. Вы можете распечатать прогнозы, если хотите увидеть, как они выглядят.

# printing first 10 predictions 
print(y_test_pred[:10])

Вывод:

Шаг 5: Визуализация точек данных с помощью Matplotlib

Чтобы визуализировать наши точки данных и нашу линейную линию, которая предсказывает значения, мы будем использовать matplotlib. Вот как мы можем построить линейную регрессию с помощью Python:

plt.figure(figsize=(10, 6))
plt.scatter(X_train, y_train, color='blue', label='Training Data')
plt.scatter(X_test, y_test, color='green', label='Testing Data')
plt.plot(X_train, y_train_pred, color='red', linewidth=2, label='Linear Regression Model')
plt.xlabel('X')
plt.ylabel('y')
plt.title('Linear Regression Model')
plt.legend()
plt.show()

Вывод:

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

Шаг 6: Проверка производительности нашей модели

Мы обсудили некоторые методы проверки производительности нашей модели в предыдущей статье о линейной регрессии, они включают MSE (среднеквадратическая ошибка), RMSE (среднеквадратичная ошибка) и R-квадрат ошибка, мы собираемся проверка прогнозов нашей модели по этим трем показателям на данный момент.

# Calculate the mean squared error on the training and testing datasets
mse_train = mean_squared_error(y_train, y_train_pred)
mse_test = mean_squared_error(y_test, y_test_pred)

# Calculate the root mean squared error on the training and testing datasets
rmse_train = np.sqrt(mse_train)
rmse_test = np.sqrt(mse_test)

# Calculate the R-squared value on the training and testing datasets
r2_train = r2_score(y_train, y_train_pred)
r2_test = r2_score(y_test, y_test_pred)

print("Mean Squared Error (Training):", mse_train)
print("Mean Squared Error (Testing):", mse_test)
print("Root Mean Squared Error (Training):", rmse_train)
print("Root Mean Squared Error (Testing):", rmse_test)
print("R-squared (Training):", r2_train)
print("R-squared (Testing):", r2_test)

Вывод:

Оценки довольно высоки, и это означает, что наша модель не так точна, но опять же, оценки ошибок могут быть уменьшены многими известными методами, такими как удаление выбросов, перекрестная проверка и многое другое.

Часто задаваемые вопросы о линейной регрессии в Python с использованием Sklearn

Почему я должен использовать sklearn для реализации линейной регрессии в Python?

Sklearn (scikit-learn) — популярная библиотека машинного обучения на Python, предоставляющая широкий набор инструментов и алгоритмов для анализа данных и моделирования. Он предлагает простой и эффективный способ реализации линейной регрессии, наряду с различными другими алгоритмами машинного обучения, что делает его удобным выбором для реализации линейной регрессии в Python.

Как создать набор данных для линейной регрессии?

Вы можете создать набор данных для линейной регрессии, используя различные методы. В Python вы можете использовать такие библиотеки, как numpy, для создания случайных точек данных на основе линейной зависимости между независимыми и зависимыми переменными. Вы также можете использовать реальные наборы данных, доступные в sklearn, или импортировать свой набор данных для анализа.

Какова роль разделения поезд-тест в линейной регрессии?

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

Как оценить эффективность модели линейной регрессии?

Для оценки производительности модели линейной регрессии можно использовать несколько показателей. Обычно используемые показатели включают среднеквадратичную ошибку (MSE), среднеквадратичную ошибку (RMSE) и R-квадрат. Более низкие значения MSE и RMSE указывают на лучшую производительность модели, а более высокие значения R-квадрата (ближе к 1) указывают на лучшее соответствие модели данным.

Может ли линейная регрессия обрабатывать категориальные переменные?

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

Необходимо ли масштабирование признаков для линейной регрессии?

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

Может ли линейная регрессия справиться с мультиколлинеарностью?

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

Могу ли я использовать линейную регрессию для прогнозирования категориальных результатов?

Линейная регрессия не подходит для прямого прогнозирования категориальных результатов, поскольку она предназначена для непрерывных числовых прогнозов. Для прогнозирования категориальных результатов больше подходят такие методы, как логистическая регрессия или алгоритмы на основе дерева решений, такие как случайный лес или повышение градиента.

Существуют ли какие-либо предположения, связанные с линейной регрессией?

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

Подробнее читайте так:

Первоначально опубликовано на https://pypixel.com.