xgboostpython:xgboostterror:我们需要权重来评估ams

2024-09-29 19:20:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在Python中使用XGBoost包 运行此代码时出现此错误

import xgboost as xgb
data=np.array(traindata.drop('Category',axis=1))
labels=np.array(traindata['Category'].cat.codes)

dtrain = xgb.DMatrix( data, label=labels)

param = {'bst:max_depth':6, 'bst:eta':0.5, 'silent':1, 'objective':'multi:softprob' }
param['nthread'] = 4
param['eval_metric'] = 'mlogloss'
param['lambda'] = 1
param['num_class']=39

evallist  = [(dtrain,'train')]

plst = param.items()
plst += [('eval_metric', 'ams@0')]

num_round = 10
bst = xgb.train( plst, dtrain, num_round, evallist )

bst.save_model('0001.model')

--------------------------------------------------------------------------- XGBoostError Traceback (most recent call last) in () 17 18 num_round = 10 ---> 19 bst = xgb.train( plst, dtrain, num_round, evallist ) 20 21 bst.save_model('0001.model')

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/xgboost/training.pyc in train(params, dtrain, num_boost_round, evals, obj, feval, maximize, early_stopping_rounds, evals_result, verbose_eval, learning_rates, xgb_model) 122 nboost += 1 123 if len(evals) != 0: --> 124 bst_eval_set = bst.eval_set(evals, i, feval) 125 if isinstance(bst_eval_set, STRING_TYPES): 126 msg = bst_eval_set

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/xgboost/core.pyc in eval_set(self, evals, iteration, feval) 753 _check_call(_LIB.XGBoosterEvalOneIter(self.handle, iteration, 754 dmats, evnames, len(evals), --> 755 ctypes.byref(msg))) 756 return msg.value 757 else:

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/xgboost/core.pyc in _check_call(ret) 95 """ 96 if ret != 0: ---> 97 raise XGBoostError(_LIB.XGBGetLastError()) 98 99

XGBoostError: we need weight to evaluate ams

我在文件里没看到任何关于它的东西

https://xgboost.readthedocs.io/en/latest/python/python_intro.html

http://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/


Tags: inmodelparamevaltrainnumsetbst
1条回答
网友
1楼 · 发布于 2024-09-29 19:20:46

当计算ams度量时,需要为每个标记的训练点指定一个权重。在创建DMatrix时,可以使用关键字参数weight来设置权重。一个简单的例子。在

weights = np.ones(len(labels))
dtrain = xgb.DMatrix(data, label = labels, weight = weights)

还有一个来自最近Kaggle竞赛的深入例子:https://github.com/tqchen/xgboost/blob/master/demo/kaggle-higgs/higgs-numpy.py。在

相关问题 更多 >

    热门问题