rank_metric.cc:88: Check failed: preds.size() == info.labels_.size() (270
vs. 90) label size predict size not match'
我跑步时
modelfit=model.fit(Xtrain,ytrain)
运行正常
modelfit=model.fit(Xtrain,ytrain,eval_set = [(Xtest, ytest)])
产生以上错误
我尝试了所有可用于多类的eval_metric,它们都产生相同的错误。
模型如下:
xgb.XGBClassifier(n_jobs = -1,objective = 'multi:softmax',
num_class=3, eval_metric = 'mlogloss',
tree_method='approx', scale_pos_weight=1,
**{'subsample':0.5,'colsample_bylevel':1, 'colsample_bytree':
1, 'gamma':0, 'learning_rate':0.3,'max_delta_step': 0, 'max_depth': 10,
'min_child_weight': 1, 'n_estimators': 10, 'reg_alpha': 0, 'reg_lambda':
0})
ipdb> modelfit.predict(Xtest)
array([-1., -1., -1., -1., -1., -1., -1., 1., -1., -1., -1., 1., 1.,
1., -1., 1., 0., -1., 1., 1., 1., -1., -1., 1., 1., 1.,
1., 1., 1., 0., 0., -1., -1., -1., -1., -1., -1., -1., -1.,
-1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,
-1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1., -1.,
-1., -1., -1., -1., -1., -1., -1., 1., -1., -1., -1., -1., -1.,
0., 1., 1., 1., 1., 1., 1., -1., -1., -1., -1., -1.])
ipdb> len(modelfit.predict(Xtest))
90
ipdb> len(ytest)
90
ipdb> ytest
array([-1., -1., -1., -1., -1., -1., -1., 0., -1., 1., 0., 1., 0.,
1., 0., 1., 0., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., -1., -1., -1., -1., -1., -1., -1., -1., 0., 0., 1.,
1., 0., 0., 0., 0., 1., 1., 1., 1., 0., 0., 1., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., -1.,
-1., -1., -1., 0., 0., 0., 1., 1., 1., 1., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
从调试器输出中可以看到,predict(Xtest)和ytest的len均为90。 为什么xgboost会产生错误?
答案 0 :(得分:0)
看起来像是0.80版本中的错误 升级到xgboost 0.82时可以正常工作