Python 实现XGBoost回归器的问题

Python 实现XGBoost回归器的问题,python,machine-learning,xgboost,Python,Machine Learning,Xgboost,我是一名机器学习的初学者,当时正在尝试使用鲍鱼数据集。我试图预测鲍鱼的年龄(参考数据集)。我运行了一个XGBoost回归器,当我实现以下功能时,代码运行良好: model=XGBRegressor(n_estimators=500,learning_rate=0.05) model.fit(X_train,y_train) X_train_preds = model.predict(X_train) X_test_preds = model.predict(X_test) 但当我添加一些提前停

我是一名机器学习的初学者,当时正在尝试使用鲍鱼数据集。我试图预测鲍鱼的年龄(参考数据集)。我运行了一个XGBoost回归器,当我实现以下功能时,代码运行良好:

model=XGBRegressor(n_estimators=500,learning_rate=0.05)
model.fit(X_train,y_train)
X_train_preds = model.predict(X_train)
X_test_preds = model.predict(X_test)
但当我添加一些提前停止轮时,它停止工作:

model=XGBRegressor(n_estimators=500,learning_rate=0.05)
model.fit(X_train,y_train, early_stopping_rounds=5, eval_set=([X_test,y_test]))
X_train_preds = model.predict(X_train)
X_test_preds = model.predict(X_test)
并给出以下错误:

Traceback (most recent call last):

  File "<ipython-input-55-6cfab6319852>", line 1, in <module>
    runfile('C:/Users/dell/.spyder-py3/Abalone_project.py', wdir='C:/Users/dell/.spyder-py3')

  File "E:\l\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
    execfile(filename, namespace)

  File "E:\l\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/dell/.spyder-py3/Abalone_project.py", line 47, in <module>
    model.fit(X_train,y_train, early_stopping_rounds=5, eval_set=([X_test,y_test]), verbose=False)

  File "E:\l\Anaconda3\lib\site-packages\xgboost\sklearn.py", line 370, in fit
    for i in range(len(eval_set)))

  File "E:\l\Anaconda3\lib\site-packages\xgboost\sklearn.py", line 370, in <genexpr>
    for i in range(len(eval_set)))

  File "E:\l\Anaconda3\lib\site-packages\pandas\core\frame.py", line 2685, in __getitem__
    return self._getitem_column(key)

  File "E:\l\Anaconda3\lib\site-packages\pandas\core\frame.py", line 2692, in _getitem_column
    return self._get_item_cache(key)

  File "E:\l\Anaconda3\lib\site-packages\pandas\core\generic.py", line 2486, in _get_item_cache
    values = self._data.get(item)

  File "E:\l\Anaconda3\lib\site-packages\pandas\core\internals.py", line 4115, in get
    loc = self.items.get_loc(item)

  File "E:\l\Anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 3065, in get_loc
    return self._engine.get_loc(self._maybe_cast_indexer(key))

  File "pandas\_libs\index.pyx", line 140, in pandas._libs.index.IndexEngine.get_loc

  File "pandas\_libs\index.pyx", line 162, in pandas._libs.index.IndexEngine.get_loc

  File "pandas\_libs\hashtable_class_helper.pxi", line 1492, in pandas._libs.hashtable.PyObjectHashTable.get_item

  File "pandas\_libs\hashtable_class_helper.pxi", line 1500, in pandas._libs.hashtable.PyObjectHashTable.get_item

KeyError: 0
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
运行文件('C:/Users/dell/.spyder-py3/Abalone_project.py',wdir='C:/Users/dell/.spyder-py3')
文件“E:\l\Anaconda3\lib\site packages\spyder\utils\site\sitecustomize.py”,第705行,在runfile中
execfile(文件名、命名空间)
文件“E:\l\Anaconda3\lib\site packages\spyder\utils\site\sitecustomize.py”,第102行,在execfile中
exec(编译(f.read(),文件名,'exec'),命名空间)
文件“C:/Users/dell/.spyder-py3/Abalone_project.py”,第47行,在
模型拟合(X\u序列,y\u序列,提前停车轮数=5,评估集=([X\u测试,y\u测试]),详细=假)
文件“E:\l\Anaconda3\lib\site packages\xgboost\sklearn.py”,第370行,格式为fit
对于范围内的i(len(eval_set)))
文件“E:\l\Anaconda3\lib\site packages\xgboost\sklearn.py”,第370行,在
对于范围内的i(len(eval_set)))
文件“E:\l\Anaconda3\lib\site packages\pandas\core\frame.py”,第2685行,在\uu getitem中__
返回self.\u getitem\u列(键)
文件“E:\l\Anaconda3\lib\site packages\pandas\core\frame.py”,第2692行,在\u getitem\u列中
返回self.\u获取\u项目\u缓存(密钥)
文件“E:\l\Anaconda3\lib\site packages\pandas\core\generic.py”,第2486行,在\u get\u item\u缓存中
values=self.\u data.get(项目)
get中第4115行的文件“E:\l\Anaconda3\lib\site packages\pandas\core\internals.py”
loc=自身项目。获取loc(项目)
文件“E:\l\Anaconda3\lib\site packages\pandas\core\index\base.py”,第3065行,在get\U loc中
返回self.\u引擎。获取\u loc(self.\u可能\u cast\u索引器(键))
pandas.\u libs.index.IndexEngine.get\u loc文件“pandas\\u libs\index.pyx”,第140行
pandas.\u libs.index.IndexEngine.get\u loc中第162行的文件“pandas\\u libs\index.pyx”
pandas.\u libs.hashtable.PyObjectHashTable.get\u项中的第1492行文件“pandas\\u libs\hashtable\u class\u helper.pxi”
pandas.\u libs.hashtable.PyObjectHashTable.get\u项目中第1500行的文件“pandas\\u libs\hashtable\u class\u helper.pxi”
关键错误:0
有人能告诉我是什么原因导致错误以及如何纠正错误吗?

请尝试更改这行

model.fit(X\u列车,y\u列车,提前停车轮=5,评估集=([X\u测试,y\u测试])

model.fit(X\u列车,y\u列车,提前停车轮=5,评估集=[(X\u测试,y\u测试)]

运行时没有错误的更新代码:

from xgboost import XGBRegressor

# dummy data

X_train = [[0,1], [1,2], [3,2]]
y_train = [0, 1, 0]

model=XGBRegressor(n_estimators=500,learning_rate=0.05)
model.fit(X_train,y_train, early_stopping_rounds=5, eval_set=[(X_train,y_train)])
X_train_preds = model.predict(X_train)
根据文件

 eval_set(evals, iteration=0, feval=None)

    Evaluate a set of data.

    Parameters

            evals (list of tuples (DMatrix, string)) – List of items to be evaluated.

            iteration (int) – Current iteration.

            feval (function) – Custom evaluation function.

    Returns

        result – Evaluation result string.
evals(元组列表(DMatrix,string))–要计算的项目列表。因此,它需要元组列表,而不是相反