首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在XGBRFRegressor中使用早期停止?

如何在XGBRFRegressor中使用早期停止?
EN

Stack Overflow用户
提问于 2021-07-28 16:04:10
回答 1查看 466关注 0票数 0

我试过用这样的随机森林来拟合:

代码语言:javascript
复制
from xgboost import XGBRFRegressor
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split

X, y = make_regression(random_state=7)

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=7)

forest = XGBRFRegressor(num_parallel_tree = 10, num_boost_round = 1000, verbose=3)

forest.fit(
    X_train, 
    y_train,
    eval_set = [(X_test, y_test)],
    early_stopping_rounds = 10,
    verbose = True
)

然而,早停似乎从来没有起作用,据我所知,这个模型符合10,000棵树的要求。评估指标只打印一次,而不是像我预期的那样在每一轮推展之后打印出来。

有什么正确的方法来建立这种类型的模型(在scikit中工作-学习API)以使早期停止如我所期望的那样生效?

我已要求发展商在此澄清:

https://discuss.xgboost.ai/t/how-is-xgbrfregressor-intended-to-work-with-early-stopping/2391

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-28 19:11:22

医生说

XGBRFRegressor具有相应调整的一些参数的默认值和含义。特别是:

  • n_estimators指定要训练的森林的大小;它被转换为num_parallel_tree,而不是增加回合的数量。
  • 默认情况下,learning_rate设置为1。
  • 默认情况下,colsample_bynodesubsample设置为0.8
  • booster总是gbtree

您可以看到,在实际操作中,在代码中num_parallel_trees被重写为输入n_estimatorsnum_boosting_rounds被重写为1。

可能值得阅读文档链接前面的段落,以便了解xgboost如何处理随机森林。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68563793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档