Python: LightGBM cross validation. How to use lightgbm.cv for regression?

匿名 (未验证) 提交于 2019-12-03 00:56:02

问题:

I want to do a cross validation for LightGBM model with lgb.Dataset and use early_stopping_rounds. The following approach works without a problem with XGBoost's xgboost.cv. I prefer not to use Scikit Learn's approach with GridSearchCV, because it doesn't support early stopping or lgb.Dataset.

import lightgbm as lgb from sklearn.metrics import mean_absolute_error dftrainLGB = lgb.Dataset(data = dftrain, label = ytrain, feature_name = list(dftrain))  params = {'objective': 'regression'}  cv_results = lgb.cv(         params,         dftrainLGB,         num_boost_round=100,         nfold=3,         metrics='mae',         early_stopping_rounds=10         ) 

The task is to do regression, but the following code throws an error: Supported target types are: ('binary', 'multiclass'). Got 'continuous' instead.

Does LightGBM support regression, or did I supply wrong parameters?

回答1:

By default, the stratify parameter in the lightgbm.cv is True. According to the documentation:

But stratify works only with classification problems. So to work with regression, you need to make it False.

cv_results = lgb.cv(         params,         dftrainLGB,         num_boost_round=100,         nfold=3,         metrics='mae',         early_stopping_rounds=10,          # This is what I added         stratified=False         ) 

Now its working.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!