线性回归算法简介

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

图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房价数据集
可以点击这个链接查看下该数据集的简单介绍,下面我们做一下简单的代码示例。

#导入接下来要使用的库
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 = a 1 ∗ X 1 + a 2 ∗ X 2 + ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ + a 13 ∗ X 13 + b y = a_1 * X_1 + a_2 * X_2 +······+ a_{13} * X_{13} + b y=a1X1+a2X2++a13X13+b
其中 a 1 , a 2 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ a 13 a_1,a_2······a_{13} a1,a2a13是我们数据集中13个变量特征的权重参数, b b 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算法的优缺点
优点:
结果具有很好的可解释性,权重参数很清晰的体现了各特征在结果预测中所起的作用。
缺点:
对非线性数据拟合效果不好。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值