使用RandomizedSearchCV调参RandomForest时因回归器返回浮点数致F1评分报错
问题分析与解决方案
这问题我碰到过好多次,核心原因其实特别直白——你用回归模型去处理二分类任务了!
为什么会报错?
你选的RandomForestRegressor是用来预测连续数值的模型,它输出的是0到1之间的浮点数;而你指定的评分指标f1是分类任务专属指标,它要求模型输出的是离散的类别标签(你的目标变量state是True/False的二值类别)。两者不匹配,就会抛出Classification metrics can't handle a mix of binary and continuous targets这个错误。
正确的解决步骤
直接把回归模型换成分类模型就行,具体修改如下:
- 替换模型类:把
RandomForestRegressor换成RandomForestClassifier - 保持参数搜索配置不变:你定义的
random_grid里的参数对分类器同样适用,不需要修改 - 重新运行随机搜索
修改后的完整代码:
import numpy as np from sklearn.ensemble import RandomForestClassifier # 这里替换了模型类 from sklearn.model_selection import RandomizedSearchCV # 你的参数网格完全不用改 n_estimators = [int(x) for x in np.linspace(start = 200, stop = 2000, num = 10)] max_features = ['auto', 'sqrt'] max_depth = [int(x) for x in np.linspace(10, 110, num = 11)] max_depth.append(None) min_samples_split = [2, 5, 10] min_samples_leaf = [1, 2, 4] bootstrap = [True, False] random_grid = {'n_estimators': n_estimators, 'max_features': max_features, 'max_depth': max_depth, 'min_samples_split': min_samples_split, 'min_samples_leaf': min_samples_leaf, 'bootstrap': bootstrap} # 初始化分类器 rf = RandomForestClassifier(random_state = 42) # 随机搜索配置不变,scoring='f1'完美适配分类任务 rf_random = RandomizedSearchCV(estimator = rf, param_distributions = random_grid, scoring = 'f1', n_iter = 100, cv = 5, verbose=2, random_state=42, n_jobs = -1) # 拟合模型,这次就不会报错了 rf_random.fit(X_train, y_train)
额外说明(不推荐的替代方案)
如果你非要用回归模型(完全没必要,分类器更适配),可以自定义一个评分函数,先把回归输出的浮点数通过阈值(比如0.5)转为二值标签,再计算f1:
from sklearn.metrics import f1_score, make_scorer def regressor_f1_score(y_true, y_pred): # 把回归输出转为二值标签 y_pred_binary = y_pred >= 0.5 return f1_score(y_true, y_pred_binary) # 用自定义评分函数替换默认的scoring参数 custom_scorer = make_scorer(regressor_f1_score) rf_random = RandomizedSearchCV(estimator = RandomForestRegressor(random_state=42), param_distributions = random_grid, scoring = custom_scorer, n_iter = 100, cv = 5, verbose=2, random_state=42, n_jobs = -1)
但还是那句话,直接用RandomForestClassifier才是最合理的选择,它会自动输出类别标签,完美适配f1评分。
内容的提问来源于stack exchange,提问作者iTSmE
相关产品推荐
相关产品推荐

