XGBoost错误'DMatrix'对象不支持索引

问题描述 投票:0回答:1

我试图使用.train函数和DMatrix使用XGBoost库,但由于一个错误我有点卡住:

Traceback(最近一次调用最后一次):

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

文件“C:\ Users \ users \ Anaconda3 \ envs \ Lightgbm \ lib \ site-packages \ spyder \ utils \ site \ sitecustomize.py”,第705行,在runfile execfile(filename,namespace)中

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

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

文件“E:/CrossValidation.py”,第214行,在mainXGB中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行,在train early_stopping_rounds = early_stopping_rounds)

文件“C:\ Users \ users \ Anaconda3 \ envs \ Lightgbm \ lib \ site-packages \ xgboost \ training.py”,第204行,列车xgb_model = xgb_model,callbacks = callbacks)

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

文件“C:\ Users \ users \ Anaconda3 \ envs \ Lightgbm \ lib \ site-packages \ xgboost \ training.py”,第32行,bst = Booster(params,[dtrain] + [d [0]表示d in evals])

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)

有谁知道如何解决这个问题?

python xgboost
1个回答
1
投票

问题在于evals论证。预计元组列表,所以将evals=[dtest]更改为evals=[(dtest, "Test")]

© www.soinside.com 2019 - 2024. All rights reserved.