web-dev-qa-db-ja.com

Python:LightGBMクロス検証。 lightgbm.cvを回帰に使用する方法は?

lgb.Datasetを使用してLightGBMモデルのクロス検証を行い、early_stopping_roundsを使用します。次のアプローチは、XGBoostのxgboost.cvで問題なく動作します。 Scikit LearnのアプローチをGridSearchCVで使用しないことを好みます。早期停止または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
        )
_

タスクは回帰を行うことですが、次のコードはエラーをスローします:Supported target types are: ('binary', 'multiclass'). Got 'continuous' instead.

LightGBMは回帰をサポートしていますか、または間違ったパラメーターを指定しましたか?

14
Marius

デフォルトでは、lightgbm.cvのstratifyパラメーターはTrueです。 ドキュメント によると:

層化(ブール、オプション(デフォルト= True))–層化サンプリングを実行するかどうか。

ただし、stratifyは分類問題でのみ機能します。したがって、回帰を使用するには、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
        )

これで動作します。

27
Vivek Kumar