本文接上篇:Scikit-Learn线性回归(一)
上篇中,我们详细介绍了线性回归的概念、原理和推导,以及通过由浅入深的案例,详解了Scikit-Learn线性回归模型的基本使用。本文主要介绍N阶多项式回归,它属于线性回归的特殊情况
线性回归研究的是一个自变量与一个因变量之间的回归问题。在实际应用中,并不是所有的情景都符合线性关系,大多数情况都是非线性的
例如,二阶曲线、三阶曲线等。这种该如何处理呢?
令人意想不到的是,其实你也可以用线性模型来拟合非线性数据。一个简单的方法就是为每个特征的幂次方添加为一个新特征,然后在这个拓展过的特征集上训练线性模型。这种方法被称为多项式回归
多项式回归的基本思想是:以线性回归为基础,拓展数据集特征空间的维度,且被拓展的特征空间维度上的数据是给定数据集相关项的多项式项
多选线性回归需要使用Scikit-Learn的PolynomialFeatures对X进行处理,它会将X转化为多个特征,分别对应x0、x1、x2、…
例如,我们使用二次方程y=ax2+bx+c生成一些非线性数据,Scikit-Learn预处理模块中的PolynomialFeatures类提供了这种支持:将训练数据(只有一个特征:x)进行转换,将每个特征的幂次方(此处为平方,即x2)作为新特征加入训练集,在新的数据集上进行线性拟合
PolynomialFeatures会在给定的多项式阶数下,添加所有的特征组合。例如,有两个特征x和y,阶数degree=3,PolynomialFeatures不只会添加特征x2、x3、y2和y3,还会添加组合xy、x2y及xy2。要小心特征组合的数量爆炸!
假设我们的样本符合三次曲线:y=ax3+bx2+cx+d,根据线性回归方程定义,我们假设我们的模型函数为: f ( x 3 , x 2 , x 1 ) = a x 3 + b x 2 + c x 1 + d f(x_3,x_2,x_1)=ax_3+bx_2~+cx_1+d f(x3,x2,x1)=ax3+<