连续型数据使用GridSearchCV报未知连续标签错误问题排查
报错根因
ValueError: Unknown label type: 'continuous'的触发原因是回归任务误用了分类模型:
- 你虽然同时导入了
GradientBoostingClassifier(梯度提升分类器)和GradientBoostingRegressor(梯度提升回归器),但实际实例化、传入GridSearchCV的是分类器GradientBoostingClassifier - 分类器仅支持离散型分类标签,无法处理波士顿房价预测这类任务的连续型数值标签,因此直接抛出标签类型错误
- 之前决策树调参能正常运行,是因为你用的是适配回归任务的
DecisionTreeRegressor,模型类型和任务匹配,自然不会报错
注意:不要在回归任务上用
LabelEncoder()处理标签,该方法仅用于将离散分类值转换为整数编码,强行处理连续标签会破坏数值语义,得到的模型结果完全不具备参考价值。
另外你当前设置的学习率参数范围不合理:learning_rate取1、10、100时模型会严重发散,调参建议将范围控制在0.001到1之间。
修正后可运行代码
from sklearn.ensemble import GradientBoostingRegressor from sklearn.model_selection import GridSearchCV # 实例化梯度提升回归器,匹配回归任务 gbr = GradientBoostingRegressor() parameters = { "n_estimators" : [5 , 50, 250, 500], "max_depth" : [1, 3, 5, 7, 9], "learning_rate" : [0.01, 0.05, 0.1, 0.2] } cv = GridSearchCV(gbr, parameters, cv=5) cv.fit(X_train, y_train.values.ravel()) # 输出调参结果 print(cv.best_params_) print(cv.best_score_)
内容的提问来源于stack exchange,提问作者hwurzy
相关产品推荐
相关产品推荐

