微信公众号:yale记 关注可了解更多的教程问题或建议,请公众号留言。
背景介绍
线性回归用于根据连续变量估算实际值(房屋成本,看涨期权,总销售额等)。在这里,我们通过拟合最佳线来建立独立变量和因变量之间的关系。该最佳拟合线称为回归线,并由线性方程Y = a * X b表示。
理解线性回归的最佳方法是重温这种童年经历。你问一个五年级的孩子,通过增加体重的顺序来安排他们班上的人,而不是问他们的体重!你觉得孩子会怎么做?他/她可能会在人的身高和体型上进行(视觉分析),并使用这些可见参数的组合进行排列。这是现实生活中的线性回归!孩子实际上已经发现高度和构建将通过关系与权重相关联,这看起来像上面的等式。
在这个等式中:
Y - 因变量
a - 坡度
X - 自变量
b - 拦截
这些系数a和b是基于最小化数据点和回归线之间的距离的平方差的总和而导出的。
请看下面的例子。在这里,我们确定了具有线性方程y = 0.2811x 13.9的最佳拟合线。现在使用这个等式,我们可以找到重量,知道一个人的身高。
线性回归主要有两种类型:简单线性回归和多元线性回归。简单线性回归的特征在于一个独立变量。并且,多元线性回归(顾名思义)的特征是多个(超过1个)自变量。在找到最佳拟合线时,您可以拟合多项式或曲线回归。这些被称为多项式或曲线回归。
来看使用python的scikit-learn完成的线性回归案例:
上文代码块
代码内容:
代码语言:javascript复制# importing required libraries
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# read the train and test dataset
train_data = pd.read_csv('train.csv')
test_data = pd.read_csv('test.csv')
print(train_data.head())
# shape of the dataset
print('nShape of training data :',train_data.shape)
print('nShape of testing data :',test_data.shape)
# Now, we need to predict the missing target variable in the test data
# target variable - Item_Outlet_Sales
# seperate the independent and target variable on training data
train_x = train_data.drop(columns=['Item_Outlet_Sales'],axis=1)
train_y = train_data['Item_Outlet_Sales']
# seperate the independent and target variable on training data
test_x = test_data.drop(columns=['Item_Outlet_Sales'],axis=1)
test_y = test_data['Item_Outlet_Sales']
'''
Create the object of the Linear Regression model
You can also add other parameters and test your code here
Some parameters are : fit_intercept and normalize
Documentation of sklearn LinearRegression:
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html
'''
model = LinearRegression()
# fit the model with the training data
model.fit(train_x,train_y)
# coefficeints of the trained model
print('nCoefficient of model :', model.coef_)
# intercept of the model
print('nIntercept of model',model.intercept_)
# predict the target on the test dataset
predict_train = model.predict(train_x)
print('nItem_Outlet_Sales on training data',predict_train)
# Root Mean Squared Error on training dataset
rmse_train = mean_squared_error(train_y,predict_train)**(0.5)
print('nRMSE on train dataset : ', rmse_train)
# predict the target on the testing dataset
predict_test = model.predict(test_x)
print('nItem_Outlet_Sales on test data',predict_test)
# Root Mean Squared Error on testing dataset
rmse_test = mean_squared_error(test_y,predict_test)**(0.5)
print('nRMSE on test dataset : ', rmse_test)