关于sklearn中PolynomialFeatures类

来源:8-2 scikit-learn中的多项式回归与Pipeline

你鸡

2018-08-07

http://img.mukewang.com/szimg/5b694a1a000147a508280349.jpg

这里升维后加的一列1 是线性回归中X和X_b之间差的那一列1吗,可是加这一列1的操作不是已经封装在类里了吗,这样不就重复了

写回答

1回答

liuyubobobo

2018-08-07


赞问题!


答案是:是,也不是。


首先,说不是,是因为他们语意不同。

在线性回归中,由于需要考虑常数项的系数,所以我们加了一列1,让X变成了X_b,这样,我们才能考虑常数项系数;

但是,在这里,这一列1是创建多项式特征的过程中添加的,是数据预处理的结果。它的本质是:我们需要所有degree<=d的特征,其中,也包括d=0的特征。当d=0时x^0=1。这是一列新的特征,只不过,这列特征和x的大小没有关系,恒等于1。


说他是,是因为,这样的一个特征矩阵,在实际运算的时候,这一列1确实可以直接当做X_b来使用。在运算结果上是没差的。


好消息是,对于这样的X,即使我们再扩充一列1,形成的X_b里有两列1,最终的运算结果也是一样的。在我们计算损失函数中,这两列数据将共同承担常数项的任务,不影响最终让损失函数最低时,其他特征的系数值:)

1
3
liuyubobobo
回复
慕后端6007370
在sklearn的LinearRegression的封装中,coef_指特征的系数,你可以理解成y是怎样随着这个特征变化的。由于这个特征根本不会变,所以y也不会变,相应得到的就是0:)
2018-09-01
共3条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程