gpt4 book ai didi

python - 为什么 AdaBoostRegressor 的 neg_mean_squared_error 为正数?

转载 作者:行者123 更新时间:2023-11-30 09:15:27 29 4
gpt4 key购买 nike

当使用 sklearn 的 cross_val_scorescoring='neg_mean_squared_error' 调整 AdaBoostRegressor 时,它会返回一个正数。我的所有其他算法(线性回归、svr、随机森林回归器等)都会返回负数。然后,我使用 np.mean(np.sqrt(-cross_val_score)) 计算 RMSE 分数的平均值。

代码如下:

# AdaBoost Reg CV
start_time = time.time() # Timing

# Metrics
ada_reg_cv = AdaBoostRegressor(DecisionTreeRegressor(random_state=42),
n_estimators=200,
loss='linear', random_state=42)
ada_reg_cv_scores = cross_val_score(ada_reg_cv, X_train_trees, y_train,
scoring='neg_mean_squared_error',
cv=5)
ada_reg_cv_scores = np.sqrt(-ada_reg_cv_scores)

print('CV RMSE:', ada_reg_cv_scores.mean())
print('CV Std:', ada_reg_cv_scores.std())

# Timing
ada_reg_cv_time = (time.time() - start_time)
print('\nRunning Time: {}'.format(datetime.timedelta(seconds=ada_reg_cv_time)))

输出实际上是极高的 RMSE(太高而无法准确测量)。我分别运行这些行,发现第 11 行 ada_reg_cv_scores = np.sqrt(-ada_reg_cv_scores) 返回 nan,因为它取负数的根。

然后,当我在 sqrt 内没有 (-) 符号的情况下运行它时,我得到了正确的 RMSE。那么为什么“neg_mean_squared_error”值为正呢?

最佳答案

当我在 AdaBoostRegressor (max_depth=5) 中调整 DecisionTreeRegressor 后,neg_mean_squared_error 返回负值,这是理所应当的。所以我猜测这个错误与决策树的不规范程度有关,因为树模型的错误可能是 0。

关于python - 为什么 AdaBoostRegressor 的 neg_mean_squared_error 为正数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57232012/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com