xgboost.train против XGBClassifier - PullRequest
0 голосов
/ 03 мая 2018

Я использую python для постепенного размещения модели xgboost (чанк за чанк). Я наткнулся на решение, которое использует xgboost.train, но я не знаю, что делать с объектом Booster, который он возвращает. Например, XGBClassifier имеет такие параметры, как подгонка, прогнозирование, предсказание_пробы и т. Д.

Вот что происходит внутри цикла for, который я читаю в данных постепенно:

dtrain=xgb.DMatrix(X_train, label=y)
param = {'max_depth':2, 'eta':1, 'silent':1, 'objective':'binary:logistic'}
modelXG=xgb.train(param,dtrain,xgb_model='xgbmodel')
modelXG.save_model("xgbmodel")

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

XGBClassifier - это scikit-learn совместимый класс, который может использоваться вместе с другими утилитами scikit-learn.

Кроме этого, это просто оболочка над xgb.train, в которой вам не нужно предоставлять расширенные объекты, такие как Booster и т. Д.

Просто отправьте ваши данные в fit(), predict() и т. Д., И внутренне они будут автоматически преобразованы в соответствующие объекты.

0 голосов
/ 04 мая 2018

Я не совсем уверен, что был твой вопрос. xgb.XGBMClassifier.fit() под капотом вызывает xgb.train(), поэтому нам нужно сопоставить нам аргументы соответствующих функций.

Если вас интересует, как реализовать обучение, которое вы имеете в виду, тогда вы можете сделать

clf = xgb.XGBClassifier(**params)
clf.fit(X, y, xgb_model=your_model)

См. Документацию здесь . На каждой итерации вы должны будете сохранять бустер, используя что-то вроде clf.get_booster().save_model(xxx).

PS Я надеюсь, что вы будете учиться в мини-пакетах, то есть порциями, а не буквально построчно, т.е. пример за примером, поскольку это приведет к падению производительности из-за записи / чтения модели каждый раз

...