线性回归算法简介

线性回归(Linear Regression)定义:是一种通过对样本特征进行线性组合来进行预测的线性模型,其目的是找到一条直线或者一个平面或者更高维的超平面,使得预测值与真实值之间的误差最小。
图1:一维数据,线性拟合模型

线性回归算法简介_第1张图片
linear regression.png

图2:二维数据,平面拟合模型

线性回归算法简介_第2张图片
linear regression model.png

API文档

sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=None)

下面我们将对线性回归算法中的参数做逐一说明:


'fit_intercept':布尔值,True or False作为可选项,默认为True。意思是是否返回线性回归函数的截距。
'normalize':布尔值,True or False作为可选项,默认为False。意思是是否对样本数据做标准化处理((每一个样本数据-均值)/标准差)。如果fit_interceptr = False,normalize = True,那么在对样本进行训练之前,必须做标准化处理。
'copy_X':布尔值,True or False作为可选项,默认为True。True意味着样本X将被复制,False意味着样本X是被重新写入的。
'n_jobs':整数值,意思是运算时所使用的处理器数量。n_jobs = 1,使用一个处理器单元,n_jobs = -1,使用所有处理器单元。


应用案例演示
下面以sklearn自带的数据集boston房价数据集为例,来使用线性回归算法对未知样本进行房价预测。
[boston房价数据集]https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_boston.html
可以点击这个链接查看下该数据集的简单介绍,下面我们做一下简单的代码示例。

#导入接下来要使用的库
import numpy as np
from sklearn import datasets
from sklearn.linearn_model import LinearRegression
from sklearn.model_selection import train_test_split

#导入数据集
boston = datasets.load_boston()
#获取特征
X = boston.data
#获取标签值
y = boston.target

#数据切分
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=0)

#导入线性回归模型
lr = LinearRegression()
#使用训练集对模型进行训练
lr.fit(X_train,y_train)
lr.predict(X_test[:10,:])
array([24.9357079 , 23.75163164, 29.32638296, 11.97534566, 21.37272478,
       19.19148525, 20.5717479 , 21.21154015, 19.04572003, 20.35463238])
#打印出前10个真实值
print(y_test[:10])
[22.6 50.  23.   8.3 21.2 19.9 20.6 18.7 16.1 18.6]#可以看出预测值在真实值的上下波动。

#评估模型的精度
lr.score(X_test,y_test)
0.6733825506400183#模型的精度只有67%,没有达到我们理想的准确度。

从模型的预测精度可以看出,67%显然无法达到我们的预期。该数据集是一个13维的数据集,有13个变量特征(例如房子的位置,面积,楼层,卧室数量等等)可以对我们的价格产生影响,后期我们可以对原始数据集作进一步的预处理,对特征进行筛选,以使得模型能更好的拟合我们的数据。
模型的属性
针对以上数据集,我们得出线性模型类似于这样:y = a1 * X1 + a2 * X2 +······+ a13 * X13 + b,
其中a1,a2······a13是我们数据集中13个变量特征的权重参数,b是常数项。现我们可以应用模型的属性得出权重参数与常数项。

#权重参数
lr.coef_
array([-1.21310401e-01,  4.44664254e-02,  1.13416945e-02,  2.51124642e+00,
       -1.62312529e+01,  3.85906801e+00, -9.98516565e-03, -1.50026956e+00,
        2.42143466e-01, -1.10716124e-02, -1.01775264e+00,  6.81446545e-03,
       -4.86738066e-01])
#常数项
lr.intercept_
37.93710774183296

lr算法的优缺点
优点:
结果具有很好的可解释性,权重参数很清晰的体现了各特征在结果预测中所起的作用。
缺点:
对非线性数据拟合不好。

你可能感兴趣的:(线性回归算法简介)