Python:LightGBM交叉验证。如何使用lightgbm.cv进行回归?

2024-06-06 14:52:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用lgb.dataset对LightGBM模型进行交叉验证,并使用提前停止回合。以下方法对XGBoost的XGBoost.cv没有问题。我不喜欢在GridSearchCV中使用Scikit Learn方法,因为它不支持提前停止或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是否支持回归,或者我是否提供了错误的参数?


Tags: 方法模型import错误params交叉datasetcv
1条回答
网友
1楼 · 发布于 2024-06-06 14:52:12

默认情况下,lightgbm.cv中的stratify参数是True。 根据the documentation

stratified (bool, optional (default=True)) – Whether to perform stratified sampling.

但是stratify只处理分类问题。因此,要处理回归,需要使其为假。

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
        )

现在它开始工作了。

相关问题 更多 >