代码之家  ›  专栏  ›  技术社区  ›  Marius

如何使用lightgbm。回归的cv?

  •  23
  • Marius  · 技术社区  · 6 年前

    我想对LightGBM模型进行交叉验证 lgb。数据集 和使用 early\u stopping\u回合数 .以下方法对XGBoost没有问题 XG增压。个人简历 。我不喜欢将Scikit Learn的方法用于GridSearchCV,因为它不支持提前停止或lgb。数据集。

    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是否支持回归,或者我是否提供了错误的参数?

    1 回复  |  直到 3 年前
        1
  •  44
  •   Vivek Kumar    6 年前

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

    分层(bool,可选(默认值=True))是否执行 分层抽样。

    但分层只适用于分类问题。因此,要处理回归,需要将其设为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
            )
    

    现在开始工作了。