gpt4 book ai didi

python - 当我通过 early_stopping_rounds 时 XGBClassifier 失败

转载 作者:太空狗 更新时间:2023-10-30 00:09:13 24 4
gpt4 key购买 nike

我按以下方式使用 xgboost:

from xgboost import XGBClassifier
clf = XGBClassifier()
clf = clf.fit(df_train, df_train_labels, verbose=True)

这很好用。但是,如果我添加一个 early_stopping_rounds 参数,如下所示:

clf = clf.fit(df_train, df_train_labels, early_stopping_rounds=10, verbose=True)

我收到这个错误:

---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-16-786925228ae5> in <module>()
9
10
---> 11 clf = clf.fit(df_train, df_train_labels, early_stopping_rounds=10, verbose=True)
12 print("after fit")
13 prediction = np.exp(clf.predict(df_test))

~/anaconda3/envs/python3/lib/python3.6/site-packages/xgboost/sklearn.py in fit(self, X, y, sample_weight, eval_set, eval_metric, early_stopping_rounds, verbose)
443 early_stopping_rounds=early_stopping_rounds,
444 evals_result=evals_result, obj=obj, feval=feval,
--> 445 verbose_eval=verbose)
446
447 self.objective = xgb_options["objective"]

~/anaconda3/envs/python3/lib/python3.6/site-packages/xgboost/training.py in train(params, dtrain, num_boost_round, evals, obj, feval, maximize, early_stopping_rounds, evals_result, verbose_eval, learning_rates, xgb_model, callbacks)
203 evals=evals,
204 obj=obj, feval=feval,
--> 205 xgb_model=xgb_model, callbacks=callbacks)
206
207

~/anaconda3/envs/python3/lib/python3.6/site-packages/xgboost/training.py in _train_internal(params, dtrain, num_boost_round, evals, obj, feval, xgb_model, callbacks)
99 end_iteration=num_boost_round,
100 rank=rank,
--> 101 evaluation_result_list=evaluation_result_list))
102 except EarlyStopException:
103 break

~/anaconda3/envs/python3/lib/python3.6/site-packages/xgboost/callback.py in callback(env)
190 def callback(env):
191 """internal function"""
--> 192 score = env.evaluation_result_list[-1][1]
193 if len(state) == 0:
194 init(env)

IndexError: list index out of range

我查了一下,发现 fit 方法可以传递大量参数,所以我认为我添加 early_stopping_rounds 的事实不应该造成问题。

知道这个错误的原因是什么吗?

最佳答案

出现此错误的原因是您没有指定 eval_set,xgboost 使用该 eval_set 来确定何时停止以进行提前停止。

请参阅有关fit 方法的文档 here .

eval_set (list, optional) – A list of (X, y) tuple pairs to use as a validation set for early-stopping

例如,如果您将数据分成训练集和测试集,您可以使用以下方法:

eval_set = [(X_test, y_test)]

clf = clf.fit(df_train,
df_train_labels,
eval_set=eval_set,
early_stopping_rounds=10,
verbose=True)

关于python - 当我通过 early_stopping_rounds 时 XGBClassifier 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48045263/

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