XGBoost错误“ DMatrix”对象不支持索引

时间:2018-07-15 20:25:34

标签: python xgboost

我正在尝试通过.train函数和DMatrix使用XGBoost库,但由于出现错误,我有点被卡住了:

  

回溯(最近通话最近一次):

     

文件“”,第1行,在       runfile('E:/CrossValidation.py',wdir ='E:/')

     

文件   “ C:\ Users \ users \ Anaconda3 \ envs \ Lightgbm \ lib \ site-packages \ spyder \ utils \ site \ sitecustomize.py”,   运行文件中的第705行       execfile(文件名,命名空间)

     

文件   “ C:\ Users \ users \ Anaconda3 \ envs \ Lightgbm \ lib \ site-packages \ spyder \ utils \ site \ sitecustomize.py”,   第102行,在execfile中       exec(compile(f.read(),文件名,'exec'),命名空间)

     

文件“ E:/CrossValidation.py”,第218行,在       mainXGB()

     

mainXGB中的文件“ E:/CrossValidation.py”,第214行       crossval_preds,val_preds = cv.train(X_data = X_train.values,y_data = y_train.values,X_test = X_val.values,params = xgb_params)

     

火车中的文件“ E:/CrossValidation.py”,第136行       early_stopping_rounds = early_stopping_rounds

     

文件   “ C:\ Users \ users \ Anaconda3 \ envs \ Lightgbm \ lib \ site-packages \ xgboost \ training.py”,   火车上的204号线       xgb_model = xgb_model,回调=回调)

     

文件   “ C:\ Users \ users \ Anaconda3 \ envs \ Lightgbm \ lib \ site-packages \ xgboost \ training.py”,   第32行,在_train_internal中       bst = Booster(参数,[dtrain] + [d等于d的[d [0]])

     

文件   “ C:\ Users \ users \ Anaconda3 \ envs \ Lightgbm \ lib \ site-packages \ xgboost \ training.py”,   第32行,在       bst = Booster(参数,[dtrain] + [d等于d的[d [0]])

     

TypeError:“ DMatrix”对象不支持索引

这是我的代码:

dtrain =  xgb.DMatrix(X_data[train_idx], label=np.log1p(y_data[train_idx])) # datas.slice(train_idx)
dtest = xgb.DMatrix(X_data[val_idx], label=np.log1p(y_data[val_idx]))
print('data created for xgboost')
model = self.model_base.train(params=params, dtrain=dtrain,    num_boost_round=number_iteration, evals=[dtest],   early_stopping_rounds=early_stopping_rounds)

有人知道如何解决问题吗?

1 个答案:

答案 0 :(得分:1)

问题出在evals参数上。应该有一个元组列表,因此请将evals=[dtest]更改为evals=[(dtest, "Test")]