Перейти к содержимому

Как найти коэффициенты линейной регрессии python

  • автор:

Полное руководство по линейной регрессии в Python

Линейная регрессия — это метод, который мы можем использовать для понимания взаимосвязи между одной или несколькими предикторными переменными и переменной отклика.

В этом руководстве объясняется, как выполнить линейную регрессию в Python.

Пример: линейная регрессия в Python

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

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

Шаг 1: Введите данные.

Во-первых, мы создадим DataFrame pandas для хранения нашего набора данных:

import pandas as pd #create data df = pd.DataFrame() #view data df hours exams score 0 1 1 76 1 2 3 78 2 2 3 85 3 4 5 88 4 2 2 72 5 1 2 69 6 5 1 94 7 4 1 94 8 2 0 88 9 4 3 92 10 4 4 90 11 3 3 75 12 6 2 96 13 5 4 90 14 3 4 82 15 4 4 85 16 6 5 99 17 2 1 83 18 1 0 62 19 2 1 76 

Шаг 2: Выполните линейную регрессию.

Далее мы будем использовать функцию OLS() из библиотеки statsmodels для выполнения обычной регрессии методом наименьших квадратов, используя «часы» и «экзамены» в качестве переменных-предикторов и «оценку» в качестве переменной ответа:

import statsmodels.api as sm #define response variable y = df['score'] #define predictor variables x = df[['hours', 'exams']] #add constant to predictor variables x = sm.add_constant(x) #fit linear regression model model = sm.OLS(y, x).fit() #view model summary print(model.summary()) OLS Regression Results ============================================================================== Dep. Variable: score R-squared: 0.734 Model: OLS Adj. R-squared: 0.703 Method: Least Squares F-statistic: 23.46 Date: Fri, 24 Jul 2020 Prob (F-statistic): 1.29e-05 Time: 13:20:31 Log-Likelihood: -60.354 No. Observations: 20 AIC: 126.7 Df Residuals: 17 BIC: 129.7 Df Model: 2 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ const 67.6735 2.816 24.033 0.000 61.733 73.614 hours 5.5557 0.899 6.179 0.000 3.659 7.453 exams -0.6017 0.914 -0.658 0.519 -2.531 1.327 ============================================================================== Omnibus: 0.341 Durbin-Watson: 1.506 Prob(Omnibus): 0.843 Jarque-Bera (JB): 0.196 Skew: -0.216 Prob(JB): 0.907 Kurtosis: 2.782 Cond. No. 10.8 ============================================================================== 

Шаг 3: Интерпретируйте результаты.

Вот как интерпретировать наиболее релевантные числа в выводе:

R-квадрат: 0,734.Это известно как коэффициент детерминации. Это доля дисперсии переменной отклика, которая может быть объяснена переменными-предикторами. В этом примере 73,4% вариаций в экзаменационных баллах можно объяснить количеством часов обучения и количеством сданных подготовительных экзаменов.

F-статистика: 23,46.Это общая F-статистика для регрессионной модели.

Вероятность (F-статистика): 1,29e-05. Это p-значение, связанное с общей F-статистикой. Он говорит нам, является ли регрессионная модель в целом статистически значимой. Другими словами, он говорит нам, имеют ли объединенные две предикторные переменные статистически значимую связь с переменной отклика. В этом случае p-значение меньше 0,05, что указывает на то, что переменные-предикторы «учебные часы» и «пройденные подготовительные экзамены» в совокупности имеют статистически значимую связь с экзаменационным баллом.

coef: коэффициенты для каждой переменной-предиктора говорят нам о среднем ожидаемом изменении переменной отклика, предполагая, что другая переменная-предиктор остается постоянной. Например, ожидается, что за каждый дополнительный час, потраченный на учебу, средний экзаменационный балл увеличится на 5,56 при условии, что количество сданных подготовительных экзаменов останется неизменным.

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

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

Р>|т|. Отдельные p-значения говорят нам, является ли каждая предикторная переменная статистически значимой. Мы видим, что «часы» статистически значимы (p = 0,00), а «экзамены»(p = 0,52) не является статистически значимым при α = 0,05. Поскольку «экзамены» не являются статистически значимыми, мы можем решить исключить их из модели.

Расчетное уравнение регрессии: мы можем использовать коэффициенты из выходных данных модели, чтобы создать следующее расчетное уравнение регрессии:

экзаменационный балл = 67,67 + 5,56*(часы) – 0,60*(подготовительные экзамены)

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

Имейте в виду, что, поскольку пройденные подготовительные экзамены не были статистически значимыми (p = 0,52), мы можем решить удалить их, поскольку они не улучшают общую модель. В этом случае мы могли бы выполнить простую линейную регрессию, используя только изученные часы в качестве переменной-предиктора.

Шаг 4: Проверьте предположения модели.

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

Предположение № 1: существует линейная связь между переменными-предикторами и переменной-откликом.

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

Допущение № 2: Независимость остатков.

  • Проверьте это предположение, выполнив тест Дарбина-Ватсона .

Допущение № 3: гомоскедастичность остатков.

  • Проверьте это предположение, выполнив тест Бреуша-Пагана .

Допущение № 4: Нормальность остатков.

  • Проверьте это предположение визуально, используя график QQ .
  • Проверьте это предположение с помощью формальных тестов, таких как тест Харка-Бера или тестАндерсона-Дарлинга .

Предположение № 5: Убедитесь, что мультиколлинеарность не существует среди переменных-предикторов.

  • Проверьте это предположение, рассчитав значение VIF каждой переменной-предиктора.

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

Вы можете найти полный код Python, использованный в этом руководстве , здесь .

Как выполнить простую линейную регрессию в Python (шаг за шагом)

Как выполнить простую линейную регрессию в Python (шаг за шагом)

Простая линейная регрессия — это метод, который мы можем использовать для понимания взаимосвязи между одной независимой переменной и одной переменной отклика .

Этот метод находит линию, которая лучше всего «соответствует» данным, и принимает следующий вид:

ŷ = б 0 + б 1 х

  • ŷ : Расчетное значение отклика
  • b 0 : точка пересечения линии регрессии
  • b 1 : Наклон линии регрессии

Это уравнение может помочь нам понять взаимосвязь между объясняющей переменной и переменной отклика, и (при условии, что она статистически значима) его можно использовать для прогнозирования значения переменной отклика при заданном значении объясняющей переменной.

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

Шаг 1: Загрузите данные

В этом примере мы создадим поддельный набор данных, содержащий следующие две переменные для 15 студентов:

  • Общее количество часов, отработанных для некоторого экзамена
  • Оценка экзамена

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

Следующий код показывает, как создать этот поддельный набор данных в Python:

import pandas as pd #create dataset df = pd.DataFrame() #view first six rows of dataset df[0:6] hours score 0 1 64 1 2 66 2 4 76 3 5 73 4 5 74 5 6 81 

Шаг 2: Визуализируйте данные

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

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

Мы можем создать простую диаграмму рассеяния , чтобы просмотреть взаимосвязь между двумя переменными:

import matplotlib.pyplot as plt plt.scatter (df.hours, df.score) plt.title('Hours studied vs. Exam Score') plt.xlabel('Hours') plt.ylabel('Score') plt.show() 

Диаграмма рассеяния в Python

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

Затем мы можем создать блочную диаграмму, чтобы визуализировать распределение результатов экзаменов и проверить наличие выбросов.По умолчанию Python определяет наблюдение как выброс, если оно в 1,5 раза превышает межквартильный размах, превышающий третий квартиль (Q3), или в 1,5 раза превышает межквартильный размах, меньший первого квартиля (Q1).

Если наблюдение является выбросом, на диаграмме появится крошечный кружок:

df.boxplot(column=['score']) 

Блочная диаграмма в Python

На диаграмме нет крошечных кружков, что означает, что в нашем наборе данных нет выбросов.

Шаг 3: выполните простую линейную регрессию

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

Примечание. Мы будем использовать функцию OLS() из библиотеки statsmodels, чтобы соответствовать модели регрессии.

import statsmodels.api as sm #define response variable y = df['score'] #define explanatory variable x = df[['hours']] #add constant to predictor variables x = sm.add_constant (x) #fit linear regression model model = sm. OLS (y, x). fit () #view model summary print(model. summary ()) OLS Regression Results ============================================================================== Dep. Variable: score R-squared: 0.831 Model: OLS Adj. R-squared: 0.818 Method: Least Squares F-statistic: 63.91 Date: Mon, 26 Oct 2020 Prob (F-statistic): 2.25e-06 Time: 15:51:45 Log-Likelihood: -39.594 No. Observations: 15 AIC: 83.19 Df Residuals: 13 BIC: 84.60 Df Model: 1 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ const 65.3340 2.106 31.023 0.000 60.784 69.884 hours 1.9824 0.248 7.995 0.000 1.447 2.518 ============================================================================== Omnibus: 4.351 Durbin-Watson: 1.677 Prob(Omnibus): 0.114 Jarque-Bera (JB): 1.329 Skew: 0.092 Prob(JB): 0.515 Kurtosis: 1.554 Cond. No. 19.2 ============================================================================== 

Из сводки модели мы видим, что подобранное уравнение регрессии:

Оценка = 65,334 + 1,9824 * (часы)

Это означает, что каждый дополнительный час обучения связан со средним увеличением экзаменационного балла на 1,9824 балла. А значение отрезка 65,334 говорит нам о среднем ожидаемом экзаменационном балле для студента, который учится ноль часов.

Мы также можем использовать это уравнение, чтобы найти ожидаемую оценку экзамена на основе количества часов, которые изучает студент. Например, студент, который занимается 10 часов, должен получить экзаменационный балл 85,158 :

Оценка = 65,334 + 1,9824 * (10) = 85,158

Вот как интерпретировать остальную часть сводки модели:

  • P>|t|: это значение p, связанное с коэффициентами модели. Поскольку p-значение для часов (0,000) значительно меньше 0,05, мы можем сказать, что существует статистически значимая связь между часами и оценкой .
  • R-квадрат: это число говорит нам о том, какую процентную вариацию в экзаменационных баллах можно объяснить количеством часов обучения. В целом, чем больше значение R-квадрата регрессионной модели, тем лучше независимые переменные способны предсказать значение переменной отклика. В этом случае 83,1% вариации баллов можно объяснить часами обучения.
  • F-статистика и p-значение: F-статистика ( 63,91 ) и соответствующее значение p ( 2,25e-06 ) говорят нам об общей значимости регрессионной модели, т. е. о том, полезны ли независимые переменные в модели для объяснения вариации. в переменной ответа. Поскольку p-значение в этом примере меньше 0,05, наша модель является статистически значимой, и считается, что часы полезны для объяснения вариаций в баллах .

Шаг 4: Создайте остаточные графики

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

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

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

График остаточных и подобранных значений: этот график полезен для подтверждения гомоскедастичности. На оси X отображаются подогнанные значения, а на оси Y — остатки. Пока остатки кажутся случайно и равномерно распределенными по диаграмме вокруг нулевого значения, мы можем предположить, что гомоскедастичность не нарушена:

#define figure size fig = plt.figure(figsize=(12,8)) #produce residual plots fig = sm.graphics. plot_regress_exog (model, 'hours', fig=fig) 

Остаточные графики в Python

Изготовлены четыре участка. Тот, что в верхнем правом углу, — это остаточный график по сравнению с подогнанным. По оси X на этом графике показаны фактические значения точек переменной предиктора, а по оси Y показана невязка для этого значения.

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

График QQ: этот график полезен для определения того, следуют ли остатки нормальному распределению. Если значения данных на графике падают примерно по прямой линии под углом 45 градусов, то данные распределяются нормально:

#define residuals res = model. resid #create Q-Q plot fig = sm. qqplot (res, fit= True , line=" 45 ") plt.show() 

График QQ в Python

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

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

Полный код Python, использованный в этом руководстве, можно найти здесь .

�� Как вывести коэффициенты линейной регрессии в Python: простое руководство

Как вывести коэффициенты линейной регрессии в Python? Для вывода коэффициентов линейной регрессии в Python, вам понадобится использовать библиотеку scikit-learn. Вот пример кода, который поможет вам выполнить это:

 from sklearn.linear_model import LinearRegression # Создание объекта модели линейной регрессии model = LinearRegression() # Обучение модели на ваших данных model.fit(X, y) # Вывод коэффициентов регрессии print("Коэффициенты регрессии:") print("Наклон (slope):", model.coef_) print("Пересечение (intercept):", model.intercept_) 

В этом примере мы сначала импортируем класс LinearRegression из библиотеки scikit-learn. Затем мы создаем объект модели линейной регрессии и обучаем его на ваших данных, используя метод fit(). Наконец, мы выводим коэффициенты регрессии с помощью методов coef_ и intercept_. Надеюсь, это помогло вам разобраться, как вывести коэффициенты линейной регрессии в Python! Если у вас есть еще вопросы, не стесняйтесь задавать.

Детальный ответ

Как вывести коэффициенты линейной регрессии в Python

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

 # Импортируем необходимые библиотеки from sklearn.linear_model import LinearRegression import numpy as np # Создаем данные для обучения модели X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]]) y = np.dot(X, np.array([1, 2])) + 3 # Создаем экземпляр модели model = LinearRegression() # Обучаем модель на данных model.fit(X, y) # Выводим коэффициенты линейной регрессии print(f'Коэффициенты: ') print(f'Смещение: ') 

В этом примере мы создали данные для обучения модели — массив X, содержащий значения независимых переменных, и массив y, содержащий значения зависимой переменной. Затем мы создали экземпляр класса LinearRegression из библиотеки scikit-learn и обучили его на наших данных при помощи метода fit. Наконец, мы вывели полученные коэффициенты с помощью атрибутов coef_ (коэффициенты) и intercept_ (смещение). В результате выполнения этого кода мы получим следующий вывод: Коэффициенты: [1. 2.] Смещение: 3.0 Коэффициенты [1. 2.] олицетворяют влияние каждой независимой переменной на целевую переменную. В данном случае, первая независимая переменная имеет коэффициент 1, а вторая — коэффициент 2. Смещение (интерсепт) равно 3.0, что означает, что значение целевой переменной будет увеличиваться на 3 при отсутствии каких-либо воздействий от независимых переменных. Таким образом, с использованием библиотеки scikit-learn в Python, вы можете легко вывести коэффициенты линейной регрессии. Модель, обученная на этих коэффициентах, может быть использована для предсказания значений зависимой переменной на основе новых значений независимых переменных.

Простое руководство по линейной регрессии с использованием Python

Изучите основные концепции машинного обучения при построении модели линейной регрессии на Python.

Изображение автора

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

Есть два распространенных способа сделать линейную регрессию в Python — использовать библиотеки statsmodel и sklearn. Оба варианта являются отличными и имеют свои плюсы и минусы.

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

Table of Contents 1. What is Linear Regression? 2. Linear Regression in Python - The Data 3. Linear Regression with Statsmodels - Simple Linear Regression - Multiple Linear Regression 4. Linear Regression with sklearn 5. Python for Data Science Cheat Sheet (Free PDF) 

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

Вот уравнение линейной регрессии:

где y — зависимая переменная (целевое значение), x1, x2, … xn независимая переменная (предикторы), b0 точка пересечения, b1, b2, . bn коэффициенты и n количество наблюдений.

Если уравнение неясно, может помочь изображение ниже.

Кредит: Quora

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

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

Хватит теории! Давайте узнаем, как сделать линейную регрессию в Python.

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

Есть разные способы сделать линейную регрессию в Python. Два самых популярных варианта — это библиотеки statsmodels и scikit-learn.

Во-первых, давайте посмотрим на данные, которые мы собираемся использовать для создания линейной модели.

Данные

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

Вы можете скачать этот набор данных на моем Github или на Google Диске . Обязательно оставьте этот CSV-файл в том же каталоге, где находится ваш скрипт Python.

Давайте посмотрим на этот набор данных. Для этого импортируйте панд и запустите приведенный ниже код.

import pandas as pd df_boston = pd.read_csv('Boston House Prices.csv') df_boston 
Image by author

Подводя итог, мы хотим спрогнозировать стоимость дома на основе количества комнат в доме и его расстояния до центров занятости.

Линейная регрессия со статистическими моделями

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

Если вы установили Python через Anaconda, у вас уже установлены statsmodels. Если нет, вы можете установить его с помощью conda или pip.

# pip pip install statsmodels # conda conda install -c conda-forge statsmodels 
import statsmodels.api as sm 

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

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

Простая линейная регрессия

В этом примере я выберу «Комнаты» в качестве предиктора / независимой переменной.

  • Зависимая переменная: «Значение»
  • Независимая переменная: «Комнаты».
y = df_boston['Value'] # dependent variable x = df_boston['Rooms'] # independent variable 


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

�� = ���� + �� 
Credit: Quora

Теперь давайте подберем модель, используя statsmodels. Сначала мы добавляем константу перед подгонкой модели (sklearn добавляет ее по умолчанию), а затем подбираем модель с помощью метода .fit ().

x = sm.add_constant(x1) # adding a constant lm = sm.OLS(y,x).fit() # fitting the model 
>>> lm.predict(x) 0 25.232623 1 24.305975 2 31.030253 3 29.919727 4 31.231138 . 501 24.603318 502 20.346831 503 27.822178 504 26.328552 505 19.661029 

Таблица регрессии

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

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

lm.summary() 

Изображение автора

Таблица называется «Результаты регрессии OLS». OLS означает обыкновенные наименьшие квадраты, и это наиболее распространенный метод оценки линейной регрессии.

Давайте посмотрим на некоторые важные результаты в первой и второй таблицах.

  • Деп. Переменная: это зависимая переменная (в нашем примере «Значение» — это целевое значение).
  • R-квадрат: принимает значения от 0 до 1. Значения R-квадрата, близкие к 0, соответствуют регрессии, которая не объясняет никакой изменчивости данных, тогда как значения, близкие к 1, соответствуют регрессии, которая объясняет всю изменчивость данных. Полученный r-квадрат говорит нам, что количество комнат объясняет 48,4% изменчивости стоимости домов.
  • Coef: это коэффициенты (a, b), которые мы уже видели в уравнении модели ранее.
  • Стандартная ошибка: представляет точность прогноза. Чем ниже стандартная ошибка, тем лучше прогноз.
  • t, P> t (p-значение): t-баллы и p-значения используются для проверки гипотезы. Переменная «Комнаты» имеет статистически значимое p-значение. Кроме того, с уровнем достоверности 95% мы можем сказать, что значение «Комнаты» находится в диапазоне от 8,279 до 9,925.
# Rooms coef: 9.1021 # Constant coef: - 34.6706 # Linear equation: �� = ���� + �� y_pred = 9.1021 * x['Rooms'] - 34.6706 

График линейной регрессии
Чтобы построить уравнение, воспользуемся морским борном.

import seaborn as sns import matplotlib.pyplot as plt # plotting the data points sns.scatterplot(x=x['Rooms'], y=y) #plotting the line sns.lineplot(x=x['Rooms'],y=y_pred, color='red') #axes plt.xlim(0) plt.ylim(0) plt.show() 

Изображение автора

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

Поздравляю! Вы только что построили свою первую простую линейную регрессию на Python. Если вы готовы принять вызов, узнайте, как сделать множественную линейную регрессию.

Множественная линейная регрессия

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

Начнем с установки зависимых и независимых переменных. В этом случае мы будем использовать 2 независимые переменные.

  • Зависимая переменная: «Значение»
  • Независимая переменная: «Комнаты» и «Расстояние».
y = df_boston['Value'] # dependent variable X = df_boston[['Rooms', 'Distance']] # independent variable 
X = sm.add_constant(X) # adding a constant lm = sm.OLS(y, X).fit() # fitting the model 
lm.summary() 
Image by author

Линейная регрессия с помощью sklearn

Scikit-learn — это стандартная библиотека машинного обучения на Python, которая также может помочь нам сделать простую линейную регрессию или множественную линейную регрессию.

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

Сначала установим sklearn. Если вы установили Python через Anaconda, у вас уже установлен sklearn. Если нет, вы можете установить его с помощью conda или pip.

# pip pip install scikit-learn # conda conda install -c conda-forge scikit-learn 
from sklearn import linear_model 
y = df_boston['Value'] # dependent variable X = df_boston[['Rooms', 'Distance']] # independent variable 
lm = linear_model.LinearRegression() lm.fit(X, y) # fitting the model 
lm.predict(X) 
>>> lm.score(X, y) 0.495 >>> lm.coef_ array([8.80141183, 0.48884854]) >>> lm.intercept_ -34.636050175473315 

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

Вот и все! Вы только что узнали, как сделать в Python простую множественную линейную регрессию. Вы можете найти весь код, написанный в этом руководстве, на моем Github .

Присоединяйтесь к моему списку адресов электронной почты с более чем 3 тыс. Человек, чтобы получить мою шпаргалку по Python для науки о данных, которую я использую во всех своих учебных пособиях (бесплатный PDF)

Если вам нравится читать подобные истории и вы хотите поддержать меня как писателя, подумайте о подписке, чтобы стать участником Medium. Это 5 долларов в месяц, что дает вам неограниченный доступ к тысячам руководств по Python и статьям по науке о данных. Если вы зарегистрируетесь по моей ссылке , я заработаю небольшую комиссию без каких-либо дополнительных затрат для вас.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *