关于pipeline中用named_steps得到的系数和截距的问题

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

慕粉4186965

2019-07-09

对于这个帖子中所说的解决方案,对于named_steps得到的系数,差距有点大
图片描述

poly_reg.named_steps['lin_reg'].coef_

得到的系数为

array([0.        , 1.6418146 , 1.70106747])
写回答

3回答

liuyubobobo

2019-07-10

重新回答一下。


是的。标准化改变了数据,所以,原先数据线性关系所遵守的系数丧失了。得到的系数是不一样的。但由于标准化本身是线性变换,所以,数据之间还会满足线性关系,遵守一个新的线性系数,就是你看到的这个不一样的线性系数。


怎么验证这个结果还是合理的呢?可以看R^2的值,即sklearn中回归算法的score值,得到的结果,和标准化的结果是一样的。


以下是我的实验:

//img.mukewang.com/szimg/5d258aec00017c3e10960890.jpg


继续加油!:)

0
2
liuyubobobo
回复
慕粉4186965
对!:)
2019-07-10
共2条回复

慕粉4186965

提问者

2019-07-10

不做标准化,能得到相似的系数//img.mukewang.com/szimg/5d25803a0001047507650357.jpg

0
0

liuyubobobo

2019-07-10

在管道里,首先对数据进行了多项式特征,所以这个lin_reg是针对多项式特征做的回归。而不再是原始数据。所以,已经不遵守你的原始数据设置的参数了。


应该用以下过程拆分管道,来模拟管道里的事情。因为管道里有三个元素,所以一共有三步:

//img.mukewang.com/szimg/5d24c794000186f709000536.jpg


继续加油!:)

0
3
liuyubobobo
回复
慕粉4186965
我补充了一个新的答案。标准化后得到的系数不同了,这是因为数据改变了。但是,我们算出的新系数,针对标准化后的数据,是正确的:)
2019-07-10
共3条回复

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

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

5839 学习 · 2437 问题

查看课程