Введение

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

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

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

Импорт библиотек

# Importing the libraries
import pandas as pd
import numpy as np
import seaborn as sns
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 #error calculation
from sklearn.metrics import r2_score #error calculation

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

# Importing the Dataset
data=pd.read_csv('Salesdata.csv')
data.info()

data.head()

Проверить выбросы

sns.boxplot(data['Newspaper'])

sns.boxplot(data['TV'])

sns.boxplot(data['Radio'])

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

Корреляция

# Let's see the correlation between different variables
sns.heatmap(data.corr(),cmap="magma_r",annot=True)
plt.show()

На тепловой карте переменная TV больше всего коррелирует с продажами.
Итак, давайте возьмем и выполним линейную регрессию, используя TV в качестве нашей характеристической переменной и удалим другие переменные. Давайте установим для переменной TV значение X, а для переменной Sales значение Y.

X=data['TV']
Y=data['Sales']
xval=X.values
yval=Y.values
x=xval.reshape(-1,1)
y=yval.reshape(-1,1)

Реализация линейной модели

Уравнение линейной регрессии
y=c+m1x1+m2x2+…+mnxn
y — это ответ
c — точка пересечения
m1 — коэффициент для первого признака
mn — коэффициент для n-го признака
В нашем проекте:
y=c+m1×TV
Значения m называются коэффициентами модели или параметрами модели.

# Splitting the dataset into the Training set and Test set
X_train,X_test,Y_train,Y_test=train_test_split(x,y,test_size=1/3,random_state=0)
lin_reg=LinearRegression(normalize=True)
lin_reg.fit(X_train,Y_train)
print(lin_reg.intercept_)
# Predicting the Test set results
test_pred = lin_reg.predict(X_test)

Визуализируйте результат набора поездов

# Visualising the train set results
plt.scatter(X_train, Y_train, color = '#88c939')
plt.plot(X_train, lin_reg.predict(X_train), color = 'green')

Визуализируйте результат набора тестов

# Visualising the Test set results
plt.scatter(X_test, Y_test, color = '#88c939')
plt.plot(X_train, lin_reg.predict(X_train), color = 'blue')
plt.title('Sales Price Prediction (Test set)')
plt.xlabel('TV')
plt.ylabel('Sales')
plt.show()

Оценить модель

#Evaluating the Model
score=r2_score(Y_test,test_pred)
print("R2 Score is =",score) #printing the accuracy
print("MSE is =",mean_squared_error(Y_test,test_pred))
print("RMSE of is =",np.sqrt(mean_squared_error(Y_test,test_pred)))

R Squared:R Square — это коэффициент детерминации. Он говорит нам, сколько точек приходится на линию регрессии. Значение R Square равно 80, что указывает на то, что 81% данных соответствуют регрессионной модели.

Предсказать заданное значение

#Predict the Sales for TV value 300,100,150
lin_reg.predict([[300],[100],[150]])

Заключение

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

Полный код здесь:https://github.com/DharmarajPi/Linear-Regression-Sales-Price-Prediction

LinkedIn: https://www.linkedin.com/in/dharmaraj-d-1b707898

Github: https://github.com/DharmarajPi