Рубрики
Без рубрики

Полиномиальная регрессия в Python – полная реализация в Python

Добро пожаловать в эту статью о полиномиальной регрессии в машинном обучении. Вы можете пройти статьи на простую линейную регрессию и несколько линейной регрессии

Автор оригинала: Pankaj Kumar.

Полиномиальная регрессия в Python – полная реализация в Python

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

Однако давайте быстро пересматриваем эти концепции.

Оглавление

  • Быстрая пересмотр к простой линейной регрессии и многократной линейной регрессии
  • Что такое полиномиальная регрессия?
  • Когда используется полиномиальная регрессия?
  • Почему полиномиальная регрессия называется линейной?
  • Простой пример полиномиальной регрессии в Python
    • 1. Импорт набора данных
    • 2. Предварительная обработка данных
    • 3. Установка линейной регрессии
    • 4. Визуализация результатов линейной регрессии модели
    • 5. Установка модели полиномиальной регрессии
    • 6. Визуализация полиномиальной регрессии модели
    • 7. Прогнозируя результат
  • Полный код для полиномиальной регрессии в Python
  • Заключение

Быстрая пересмотр к простой линейной регрессии и многократной линейной регрессии

Простая линейная регрессия используется для прогнозирования конечных значений ряд численных данных. Существует одна независимая переменная X, которая используется для прогнозирования переменной y. Есть постоянные, такие как B0 и B1, которые добавляют в качестве параметров в наше уравнение.

Изображение 40.

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

Изображение 39.

Что такое полиномиальная регрессия?

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

Изображение 43.

Когда используется полиномиальная регрессия?

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

Изображение 45.

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

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

Почему полиномиальная регрессия называется линейной?

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

Несмотря на то, что он имеет огромные силы, он все еще называется линейным. Это потому, что когда мы говорим о линейном, мы не смотрим на него с точки зрения X-переменной. Мы говорим о коэффициентах.

Y – это функция X. Может ли эта функция быть выражена как линейная комбинация коэффициентов, поскольку в конечном итоге используется для плагина X и прогнозирования Y.

Следовательно, просто глядя на уравнение с точки зрения коэффициентов, делает его линейным. Интересно правильно?

Теперь мы посмотрим на пример, чтобы понять, как выполнить эту регрессию.

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

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

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

С этим команда HR может относиться к позиции человека, скажем, уровень 6.5, а также может проверить, был ли сотрудник блефовать о своей старой зарплате.

Следовательно, мы будем строить Bluffy – детектор.

Набор данных можно найти здесь – https://github.com/content-anu/dataSet-polynomial-Regression

1. Импорт набора данных

Чтобы импортировать и прочитать набор данных, мы будем использовать библиотеку Pandas и использовать метод Read_CSV для чтения столбцов в кадры данных.

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

dataset = pd.read_csv('Position_Salaries.csv')
dataset

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

Изображение 46.

2. Предварительная обработка данных

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

X = dataset.iloc[:,1:2].values  
y = dataset.iloc[:,2].values

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

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

3. Установка линейной регрессии

Мы используем это, чтобы сравнить результаты этого с полиномиальной регрессией.

from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X,y)

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

Изображение 47.

4. Визуализация результатов линейной регрессии модели

plt.scatter(X,y, color='red')
plt.plot(X, lin_reg.predict(X),color='blue')
plt.title("Truth or Bluff(Linear)")
plt.xlabel('Position level')
plt.ylabel('Salary')
plt.show()

Приведенный выше код создает график, содержащий линию регрессии, как показано ниже:

Изображение 48.

5. Установка модели полиномиальной регрессии

Мы будем импортировать Polynomialfeatures класс. Poly_reg является инструментом трансформатора, который преобразует матрицу функций x в новую матрицу функций x_poly. Он содержит x1, x1 ^ 2, ……, x1 ^ n.

Степень Параметр указывает степень полиномиальных функций в x_poly. Мы рассмотрим значение по умолчанию IE 2.

from sklearn.preprocessing import PolynomialFeatures
poly_reg = PolynomialFeatures(degree=2)
X_poly = poly_reg.fit_transform(X)

X     # prints X
Изображение 49.
X_poly     # prints the X_poly
Изображение 50.

Х это исходные значения. X_poly имеет три колонны. Первый столбец – это столбец 1S для константы. X Содержащие реальные значения – средняя колонна, т.е. x1. Второй столбец – это квадрат х1.

Подгонка должна быть включена в несколько линейной модели регрессии. Для этого мы должны создать новую линейную регрессию объекта lin_reg2 И это будет использоваться для включения подгонки, которую мы сделали с объектом Poly_reg и нашим X_Poly.

lin_reg2 = LinearRegression()
lin_reg2.fit(X_poly,y)

Приведенный выше код создает следующий вывод:

Изображение 51.

6. Визуализация полиномиальной регрессии модели

from sklearn.preprocessing import PolynomialFeatures
poly_reg = PolynomialFeatures(degree=4)
X_poly = poly_reg.fit_transform(X)
lin_reg2 = LinearRegression()
lin_reg2.fit(X_poly,y)

X_grid = np.arange(min(X),max(X),0.1)
X_grid = X_grid.reshape(len(X_grid),1) 
plt.scatter(X,y, color='red') 

plt.plot(X_grid, lin_reg2.predict(poly_reg.fit_transform(X_grid)),color='blue') 

plt.title("Truth or Bluff(Polynomial)")
plt.xlabel('Position level')
plt.ylabel('Salary')
plt.show()
Изображение 52.

7. Прогнозируя результат

Изображение 53.

Полный код для полиномиальной регрессии в Python

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
 
dataset = pd.read_csv('Position_Salaries.csv')
dataset

X = dataset.iloc[:,1:2].values  
y = dataset.iloc[:,2].values

# fitting the linear regression model
from sklearn.linear_model import LinearRegression
lin_reg = LinearRegression()
lin_reg.fit(X,y)

# visualising the linear regression model
plt.scatter(X,y, color='red')
plt.plot(X, lin_reg.predict(X),color='blue')
plt.title("Truth or Bluff(Linear)")
plt.xlabel('Position level')
plt.ylabel('Salary')
plt.show()

# polynomial regression model
from sklearn.preprocessing import PolynomialFeatures
poly_reg = PolynomialFeatures(degree=2)
X_poly = poly_reg.fit_transform(X)
 
X_poly     # prints X_poly

lin_reg2 = LinearRegression()
lin_reg2.fit(X_poly,y)


# visualising polynomial regression
from sklearn.preprocessing import PolynomialFeatures
poly_reg = PolynomialFeatures(degree=4)
X_poly = poly_reg.fit_transform(X)
lin_reg2 = LinearRegression()
lin_reg2.fit(X_poly,y)
 
X_grid = np.arange(min(X),max(X),0.1)
X_grid = X_grid.reshape(len(X_grid),1) 
plt.scatter(X,y, color='red') 
 
plt.plot(X_grid, lin_reg2.predict(poly_reg.fit_transform(X_grid)),color='blue') 
 
plt.title("Truth or Bluff(Polynomial)")
plt.xlabel('Position level')
plt.ylabel('Salary')
plt.show()

Приведенный выше код выводит график, показанный ниже:

Изображение 57.

Заключение

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