2016-05-25 8 views
8

Я хотел бы добавить метрику оценки kappa для использования в xgboost в Python. У меня возникли проблемы с пониманием того, как подключить функцию Python с помощью xgboost.Как написать настраиваемую метрику оценки в python для xgboost?

В соответствии с документацией xgboost «Пользователь может добавить несколько оценочных показателей для пользователя python, не забудьте передать метрики в виде списка пар параметров вместо карты, так что последний« eval_metric »не будет отменять предыдущий "

Это было поднято в xgboost's github page для R, но не для Python.

Например, если функция каппа является:

def kappa(preds, y): 
    # perform kappa calculation 
    return score 

Как я могу идти о реализации его с xgboost? Спецификация 'kappa' как строка в параметре eval_metric Результаты XGBoostError: unknown evaluation metric type: kappa.

Аналогичным образом определение объекта объекта kappa приводит к XGBoostError: unknown evaluation metric type: <function kappa at 0x7fbef4b03488>.

Как можно использовать обычную метрику оценки в xgboost в python?

ответ

9

Изменить метод:

def kappa(preds, y): 
    # perform kappa calculation 
    return 'kappa', score 

И использовать его с feval аргументом:

bst = xgb.train(params, dtrain, num_rounds, watchlist, feval=kappa, maximize=False) 

При написании метрики пользовательской оценки помните о настройке maximize аргумента. Установка его в true означает, что алгоритм становится лучше с большим баллистическим метрикой оценки.

+0

Привет, не могли бы вы помочь мне увидеть мою проблему https://stackoverflow.com/questions/46927576/len-of-unsized-object-when-using-lift-score-in-xgboost – sweetyBaby