我试图使用.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)
有谁知道如何解决这个问题?
问题在于evals论证。预计元组列表,所以将evals=[dtest]
更改为evals=[(dtest, "Test")]
。