机器学习-线性回归(Linear Regression)案例

2019-09-12 14:23:38 浏览数 (1)

微信公众号: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)

0 人点赞