关于 VotingClassifier
来源:13-7 Stacking
慕先生6474118
2018-07-04
老师,在VotingClassifier、还有BaggingClassifier,里面都要求传入一个参数分类器,我知道传入SVC(kernel='poly',C=0.075,coef0=0.1,degree=2)这样是可以的;但是如果和网格搜索结合使用的话,前面在gridsearch中通过搜索不仅得到了这一组最佳超参数,同时grid_search.best_estimator_这个模型也已经拟合了数据样本,我想问的是,传入的超参数可以是grid_search.best_estimator_吗? 这样比较简便,而且传入好像也能运行,但是有影响吗?谢谢老师~
2回答
-
liuyubobobo
2018-07-04
完全可以。
这种方式用在VotingClassifier上更合理。你可以想象成自己调参完成了三个模型(每个模型都是一个grid_search.best_estimator_),然后对同一组测试数据集,使用投票(少数服从多数)的方式决定最后的分类结果。VotingClassifier只不过对这个过程进行了包装。
从程序的角度,这个方式也可以用于BaggingClassifier,但是由于Bagging的思想是使用大量的随机弱分类器,用放回取样的方式对每一个分类器进行训练,希望每一个分类器稍有不同,最后综合他们的意见获得最终的结果。而你的grid_search.best_estimator_只有固定的一个,是没有随机性的,所以这种方式不适合BaggingClassifier。
而事实上,当你将这一个grid_search.best_estimator_送给BaggingClassifier的时候,BaggingClassifier也将忽略它已经训练好的参数,而是使用自己的随机取样的方式对n_estimators个这个送进去的分类器类型进行训练。
所以,Bagging传进去的这个分类器,叫base_estimator,他只是一个基础,告诉Bagging使用那种算法做聚合而已;而Voting传进去的分类器(列表),就叫做estimators,你传进去的分类器将直接被使用(而不是一个基础分类器)
要想看到这一点,也可以参阅文档中的参数名:
VotingClassifier: http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.VotingClassifier.html
BaggingClassifier: http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.BaggingClassifier.html
加油!:)
032018-07-05 -
慕先生6474118
提问者
2018-07-04
因为传入grid_search.best_estimator_的话 已经了拟合样本,也同时得到了一组系数确定了一条决策边界,传入的话对结果有影响吗?
00
相似问题