我正在尝试通过.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)
有人知道如何解决问题吗?
答案 0 :(得分:1)
问题出在evals参数上。应该有一个元组列表,因此请将evals=[dtest]
更改为evals=[(dtest, "Test")]
。