GridSearchCV对BaggingClassifier调参报min_impurity_decrease无效问题
报错触发原因
- BaggingClassifier本身不包含
min_impurity_decrease参数,该参数属于你指定的基学习器DecisionTreeClassifier,直接将其写入Bagging的参数搜索空间会触发参数校验失败。 - scikit-learn的集成学习器嵌套参数需要使用
[上层参数名]__[下层参数名]的双下划线命名规则,才能被正确识别为对应层级的参数。 - 你当前参数中
max_features的取值[1.0,2.0,3.0]也存在合法性问题:该参数接收浮点数时取值范围为(0,1],代表采样特征占总特征的比例,超过1的浮点数会触发后续报错。
代码修改方案
调整参数搜索空间的键名,同时修正max_features的合法取值即可,示例如下:
DTC = DecisionTreeClassifier(max_depth=15) RFC = RandomForestClassifier(max_depth=15) BC = BaggingClassifier(base_estimator=DTC) ADB = AdaBoostClassifier(base_estimator=DTC) params = { "n_estimators": [10, 20, 100], # 若要按比例采样特征,取值范围控制在0到1之间;若要指定采样的绝对数量,改为整数类型的1、2、3即可 'max_features': [0.3, 0.7, 1.0], # 双下划线指定该参数属于Bagging的base_estimator(也就是决策树) "base_estimator__min_impurity_decrease": [1.0, 2.0, 3.0] } GSC1 = GridSearchCV(estimator=BC, param_grid=params, cv=5) GSC1.fit(X_Train, Y_Train) GSC_BC_Score = GSC1.score(X_Test, Y_Test)
内容的提问来源于stack exchange,提问作者Rao Mubashir Ali
相关产品推荐
相关产品推荐

