采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,对于使用Pipeline构造多项式逻辑回归,有办法可以看到各个特征对应的系数coef吗?
如果你不使用GridSearchCV,直接使用Pipeline进行训练的话,可以在创建 Pipeline 的外面创建LogisticRegression的对象log_reg。将这个log_reg传给Pipeline之后,在Pipeline训练以后,直接取log_reg的coef_即可。完整的代码示意如下图(省略模拟数据的创建过程):
但是如果你使用GridSearchCV进行网格搜索,则不一样。因为GridSearchCV内部要尝试不同的参数组合,所以会创建多个LogisticRegression的实例对象,而不会把最终结果存在你传的log_reg的实例中。所以对于GridSearchCV,在训练以后,应该调用best_estimator_(存放搜索后参数最优的那个Pipeline对象)中的named_steps数组(存放Pipeline中每一步的实例对象)相应log_reg那个名字的coef_。具体代码示例如下:
其实,named_steps数组是Pipeline的参数(此时,grid_search.best_estimator_)是Pipeline的一个对象。所以,其实在我说的第一种情况,不使用GridSearchCV进行网格搜索的时候,要想获得log_reg的coef_,也并不需要一定在Pipeline的外面创建LogisticRegression的实例对象,而同样可以使用named_steps的方式获得,有兴趣可以试试看,加深一下对Pipeline这个类的理解:)
加油!:)
感谢 bobo 老师详细的解答~ ?
但是对于name_steps得到的系数,差距有点大
可以参考这里:http://coding.imooc.com/learn/questiondetail/130281.html
或者 还是说一般逻辑回归对于线性的决策边界是白盒子;但是对于非线性的决策边界,即使是degree=3的简单情况,对于十几维的特征空间,引入多项式后维数也达到了很大的一个级别,这时是不是不方便看每个特征对应的系数,查看对结果的影响因子了?就也成黑盒子了;
会报错
登录后可查看更多问答,登录/注册
Python3+sklearn,兼顾原理、算法底层实现和框架使用。
2.5k 19
3.5k 17
2.9k 15
1.6k 15
1.4k 14