线性回归分为简单线性回归和多元线性回归,下面先简单介绍一下这二者:
1.简单线性回归:只有一个特征值,预测值公式如下:
2.多元线性回归:具有n个特征值,预测值公式如下:(当n=1时,即简单线性回归b=θ0,a=θ1)
多元线性回归方程演变成求θ,使得下列目标值(预测值y的误差平方和)最小:
sklearn中LinearRegression中的fit()方法就是通过训练集求出θ。
LinearRegression有两个属性intercept_和coef_,分别对应θ数组中的θ0和θ1-θn,如下图所示:
3.相比KNN,线性回归具有可解释性,即系数coef_中的θ1、θ2...θn分别对应各特征值对标记的影响:
θ>0, 正相关;θ<0,负相关;
θ值绝对值越大,特征值对标记影响越大;
我们通过boston房价预测数据集的θ分析,显示各特征值与标记值之间关系:
if __name__ == '__main__':
#获取boston数据
boston=datasets.load_boston()
x=boston.data
y=boston.target
#过滤掉异常值
x=x[y<50]
y=y[y<50]
reg=LinearRegression()
reg.fit(x,y)
#求排序后的coef
coefSort=reg.coef_.argsort()
#featureNameSort: 按对标记值的影响,从小到大的各特征值名称
#featureCoefSore:按对标记值的影响,从小到大的coef_
featureNameSort=boston.feature_names[coefSort]
featureCoefSore=reg.coef_[coefSort]
print("featureNameSort:", featureNameSort)
print("featureCoefSore:",featureCoefSore)
运行代码,输出结果为:
featureNameSort: ['NOX' 'DIS' 'PTRATIO' 'LSTAT' 'CRIM' 'INDUS' 'AGE' 'TAX' 'B' 'ZN' 'RAD'
'CHAS' 'RM']
featureCoefSore: [-1.24268073e+01 -1.21088069e+00 -8.38888137e-01 -3.50952134e-01
-1.05574295e-01 -4.35179251e-02 -2.36116881e-02 -1.37702943e-02
7.93577159e-03 3.52748549e-02 2.50740082e-01 4.55405227e-01
3.75411229e+00]
从输出结果可以看出:
正相关影响系数最大的特征值是"RM":房间的平均数量,系数值为3.75;
负相关影响系数最大的特征值是"NOX":一氧化氮浓度,系数值为-1.24;