请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

poly_reg.named_steps['lin_reg'].coef_

得到的系数为

array([0.        , 1.6418146 , 1.70106747])

正在回答

3回答

重新回答一下。


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


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


以下是我的实验:

https://img1.sycdn.imooc.com//szimg/5d258aec00017c3e10960890.jpg


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 慕粉4186965 #1
    哦,明白了,谢谢老师。
    我可以这样理解吧:对于实际工作中的X和y,我们预先不知道系数的大致范围,所以如果标准化,那么测试数据集和预测数据集都要标准化,这样得到了一个X',这个X' 、y得到的系数和X、y得到的系数,虽然y是一样的,但是X'和X不同那么系数肯定不同。这两种方式都是正确的,只是一个以后进行predict的数据一定要预先标准化
    回复 有任何疑惑可以回复我~ 2019-07-10 15:34:15
  • liuyubobobo 回复 提问者 慕粉4186965 #2
    对!:)
    回复 有任何疑惑可以回复我~ 2019-07-10 15:37:07
提问者 慕粉4186965 2019-07-10 14:05:51

不做标准化,能得到相似的系数https://img1.sycdn.imooc.com//szimg/5d25803a0001047507650357.jpg

0 回复 有任何疑惑可以回复我~
liuyubobobo 2019-07-10 00:58:31

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


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

https://img1.sycdn.imooc.com//szimg/5d24c794000186f709000536.jpg


继续加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 慕粉4186965 #1
    这样不是没法得到正确的系数?但是不做标准化能得到相似的系数
    回复 有任何疑惑可以回复我~ 2019-07-10 14:05:21
  • liuyubobobo 回复 提问者 慕粉4186965 #2
    抱歉,你是正确的。
    回复 有任何疑惑可以回复我~ 2019-07-10 14:08:06
  • liuyubobobo 回复 提问者 慕粉4186965 #3
    我补充了一个新的答案。标准化后得到的系数不同了,这是因为数据改变了。但是,我们算出的新系数,针对标准化后的数据,是正确的:)
    回复 有任何疑惑可以回复我~ 2019-07-10 14:52:55
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信