2016-05-11 7 views
1

я пытаюсь использовать XGBoost пакет в Python У меня есть эта ошибка при выполнении этого кодаXGBoost Python: XGBoostError: нам нужно вес оценить АМС

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', '[email protected]')] 

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/

ответ

2

При вычислении метрики ams вам необходимо иметь вес для каждой маркированной точки тренировки. Вы устанавливаете весы, используя вес аргумента ключевого слова при создании своей DMatrix. Простой пример.

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.

 Смежные вопросы

  • Нет связанных вопросов^_^