使用RandomForestRegressor时遇ValueError: continuous is not supported问题求助
问题原因与解决方法
核心问题
你使用了回归模型(RandomForestRegressor),却误用了分类任务专属的评估指标accuracy_score——这个指标仅适用于离散类别标签的匹配度计算,无法处理回归模型输出的连续数值,因此触发ValueError: continuous is not supported。
解决步骤
- 替换评估指标
回归任务需使用回归类评估指标,常用的有:
r2_score:衡量模型对数据变异的解释程度(取值0-1,越接近1越好)mean_squared_error(MSE):衡量预测值与真实值的平方误差均值mean_absolute_error(MAE):衡量预测值与真实值的绝对误差均值
- 修改代码示例
首先导入所需的回归指标:
from sklearn.metrics import r2_score, mean_squared_error
然后替换原评估代码:
# 训练集评估 y_train_pred = completed_pl.predict(X_train) print(f"训练集R²分数: {r2_score(y_train, y_train_pred):.2f}") print(f"训练集均方误差: {mean_squared_error(y_train, y_train_pred):.2f}") # 测试集评估 y_pred = completed_pl.predict(X_test) print(f"测试集R²分数: {r2_score(y_test, y_pred):.2f}") print(f"测试集均方误差: {mean_squared_error(y_test, y_pred):.2f}")
- 优化命名(可选)
Pipeline中的步骤命名建议与任务类型匹配,避免混淆:
completed_pl = Pipeline( steps=[ ("preprocessor", preprocessor), ("regressor", RandomForestRegressor()) # 将classifier改为regressor,更贴合回归任务 ] )
内容的提问来源于stack exchange,提问作者CrisTi
相关产品推荐
相关产品推荐

