多项式回归

什么是多项式回归呢?

我们之前已经学习过线性回归了,之前我们就假设了房价与房间数量呈现线性的关系,但实际很可能是非线性关系。百度上解释说:研究一个因变量与一个或多个自变量间多项式的回归分析方法,称为多项式回归(Polynomial Regression)。那我们先回忆下什么叫多项式,a0 + a1*x + a2 * x^2 + ... + an * x^n , 这个就叫做自变量x的n次多项式。 y = a0 + a1 * x 这是一元一次函数,y = a0 + a1 * x + a2 * x^2 这是一元二次函数,y = a0 + a1*x + a2 * x^2 + ... + an * x^n 叫做 一元n次函数。求解因变量y和自变量x之间的多项式关系的系数就是多项式回归的目的了。

多项式回归的求解

在sklearn中我们有LinearRegression帮我们实现线性回归,对于多项式回归,虽然因变量y对于自变量x来说是非线性的关系,但是因变量y对于系数a0,a1...an还是线性的关系。所以我们仍然可以使用LinearRegression, 不同与线性回归的是,对于我们的训练集需要做些处理。例如: y = a0 + a1*x + a2*x^2的求解,只需要给线性关系 y = a0 + a1*x 加一列 x^2项即可。下面让我们直接看代码理解一下:

可以我们通过 np.hstack() 给 训练集加了一列 X^2的特征。最后我们求出特征X的系数为1, X^2的系数为0.5, 截距为2. 刚好符合我们给出的 y = 0.5 * x ^2 + x + 2.

sklearn中对多项式回归的实现

对于多项式回归,一般我们还会对数据进行归一化处理,为了简化处理过程,我们引入Pipeline(串行化管道):

可以看到Pipeline的作用,就是依次帮我们执行 我们设定好的“套路”。这里我们就设置了3步,第一步做多项式转化,第二步做标准归一化,第三步做线性回归,可以看到除了最后一步是模型外,前面的步骤都是做一些数据预处理的操作。而Pipeline对象会继承最后一步模型的所有方法。在我们的例子中,就使用到了fit,predict方法。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180723G1IQHJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券