通俗得说线性回归算法(二)线性回归实战
前情提要:
一.sklearn线性回归详解
1.1 线性回归参数
介绍完线性回归,那么我们来看看如何运用sklearn来调用线性回归模型,进行训练和预测。
def LinearRegression(fit_intercept=True,
normalize=False,
copy_X=True,
n_jobs=None
)
- fit_intercept:默认为true,参数意思是说要不要计算此模型的截距。 如果设置为False,则不会在计算中使用截距。
- normalize:正则化,默认是false。
- copy_X:默认是true,会复制一份x,否则会覆盖掉原有的x。
- n_jobs:指定多少个CPU进行运算,默认是None,表示1。如果设置为-1则表示使用全部cpu。
1.2 线性回归例子
import numpy as np
from sklearn.linear_model import LinearRegression
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
# y = 1 * x_0 + 2 * x_1 + 3
y = np.dot(X, np.array([1, 2])) + 3
reg = LinearRegression().fit(X, y)
reg.score(X, y)
#打印线性回归的相关系数,在二维空间中,就是斜率k
print(reg.coef_)
#打线性回归中的独立项,二维空间中的,b
print(reg.intercept_)
pre = reg.predict(np.array([[3, 5]]))
print(pre)
这个例子取自sklearn官网,先是生成一个二维的x向量,然后对每个向量,根据公式生成y值。公式是
y = x11 + x22 + 3
得到y值后,拿去训练一个模型,由于公式已知,那结果自然也就知道了。训练好模型后,可以直接查看系数和独立项,也就是k和b。最后可以拿来预测数据了。
各位小伙伴可以运行一下自然就知道结果了。
二.其他回归模型介绍
回归分析是统计学中常见的一种分析方法,在之前也有讲过线性回归分析和梯度下降相关内容脊回归(Ridge Regression)这篇博文中的介绍:
当设计矩阵XX存在多重共线性的时候(数学上称为病态矩阵),最小二乘法求得的参数ww在数值上会非常的大,而一般的线性回归其模型是 y=wTxy=wTx ,显然,就是因为ww在数值上非常的大,所以,如果输入变量xx有一个微小的变动,其反应在输出结果上也会变得非常大,这就是对输入变量总的噪声非常敏感的原因。
如果能限制参数ww的增长,使ww不会变得特别大,那么模型对输入ww中噪声的敏感度就会降低。这就是脊回归和套索回归(Ridge Regression and Lasso Regrission)的基本思想。
为了限制模型参数ww的数值大小,就在模型原来的目标函数上加上一个惩罚项,这个过程叫做正则化(Regularization)。
如果惩罚项是参数的l2l2范数,就是脊回归(Ridge Regression)
如果惩罚项是参数的l1l1范数,就是套索回归(Lasso Regrission)
小结
今天主要介绍了sklearn中线性回归的参数,以及使用sklearn来训练线性回归模型。然后介绍了其他各个线性回归模型及主要作用和优缺点。
以上~
推荐阅读: