Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python XGBClassifier在我通过早期\u停止\u轮时失败_Python_Jupyter_Xgboost - Fatal编程技术网

Python XGBClassifier在我通过早期\u停止\u轮时失败

Python XGBClassifier在我通过早期\u停止\u轮时失败,python,jupyter,xgboost,Python,Jupyter,Xgboost,我以以下方式使用xgboost: from xgboost import XGBClassifier clf = XGBClassifier() clf = clf.fit(df_train, df_train_labels, verbose=True) 这很有效。但是,如果我添加一个early\u stopping\u rounds参数,如下所示: clf = clf.fit(df_train, df_train_labels, early_stopping_rounds=10, verbo

我以以下方式使用
xgboost

from xgboost import XGBClassifier
clf = XGBClassifier()
clf = clf.fit(df_train, df_train_labels, verbose=True)
这很有效。但是,如果我添加一个
early\u stopping\u 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
---------------------------------------------------------------------------
索引器回溯(最后一次最近调用)
在()
9
10
--->11 clf=clf.fit(df\U系列、df\U系列标签、提前停止\U轮=10、详细=真)
12打印(“拟合后”)
13预测=np.exp(clf.predict(df_测试))
~/anaconda3/envs/python3/lib/python3.6/site-packages/xgboost/sklearn.py适合(自身、X、y、样本重量、评估集、评估度量、提前停止、详细)
443早停轮=早停轮,
444评估结果=评估结果,obj=obj,feval=feval,
-->445详细(评估=详细)
446
447 self.objective=xgb_选项[“objective”]
~/anaconda3/envs/python3/lib/python3.6/site-packages/xgboost/training.py in train(参数、数据训练、数值推进、评估、对象、feval、最大化、提前停止、评估结果、详细评估、学习率、xgb模型、回调)
203 evals=evals,
204 obj=obj,feval=feval,
-->205 xgb_模型=xgb_模型,回调=回调)
206
207
~/anaconda3/envs/python3/lib/python3.6/site-packages/xgboost/training.py in\u train\u internal(参数、数据训练、数值推进、评估、obj、feval、xgb\u模型、回调)
99 end_迭代=num_boost_轮,
100秩=秩,
-->101评估结果列表=评估结果列表)
102除早期例外:
103休息
回调(env)中的~/anaconda3/envs/python3/lib/python3.6/site-packages/xgboost/callback.py
190 def回调(环境):
191“内部功能”
-->192分=环境评估结果列表[-1][1]
193如果len(状态)==0:
194初始(环境)
索引器:列表索引超出范围
我查了一下,发现
fit
方法可以传递许多参数,所以我不认为我添加
提前停止轮数的事实会导致问题


知道该错误的原因吗?

该错误的原因是您没有指定评估集,xgboost使用该评估集来确定何时停止以便提前停止

有关拟合方法,请参见文档

eval_集(列表,可选)–用作提前停止验证集的(X,y)元组对列表

例如,如果您已将数据拆分为训练集和测试集,您将使用以下内容:

eval_set = [(X_test, y_test)]

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