XGBoost最佳迭代

我正在使用XGBoost算法进行回归,代码如下:

clf = XGBRegressor(eval_set = [(X_train, y_train), (X_val, y_val)],                       early_stopping_rounds = 10,                        n_estimators = 10,                                           verbose = 50)clf.fit(X_train, y_train, verbose=False)print("Best Iteration: {}".format(clf.booster().best_iteration))

模型正确地进行了训练,但是print函数引发了以下错误:

TypeError: 'str' object is not callable

如何获取模型的最佳迭代次数?

此外,如何打印每一轮的训练误差?


回答:

对于您的TypeError:请使用get_booster()替代booster():

print("Best Iteration: {}".format(clf.get_booster().best_iteration))

当您进行预测时,如果要使用最佳迭代次数,您可以使用名为ntree_limit的参数来指定要使用的提升器数量。训练过程中生成的值是best_ntree_limit,可以在训练模型后通过以下方式调用:clg.get_booster().best_ntree_limit。更具体地说,当您进行预测时,使用以下代码:

best_iteration = clg.get_booster().best_ntree_limitpredict(data, ntree_limit=best_iteration)

如果您在.fit()命令中指定这些参数,您可以打印训练和评估过程:

clf.fit(X_train, y_train,        eval_set = [(X_train, y_train), (X_val, y_val)],        eval_metric = 'rmse',        early_stopping_rounds = 10, verbose=True)

注意: early_stopping_rounds参数应该在.fit()命令中,而不是在XGBRegressor()实例化中。

另一个注意点: XGBRegressor()中的verbose = 50是多余的。verbose变量应该在您的.fit()函数中,并且是True或False。关于verbose=True的作用,请在这里阅读verbose部分。这直接影响您的第三个问题。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注