【问题标题】:Optuna lightgbm integration giving categorical features errorOptuna lightgbm 集成给出分类特征错误
【发布时间】:2021-02-20 03:57:48
【问题描述】:

我正在使用 optuna lightgbm 集成创建模型,我的训练集有一些分类特征,我使用 lgb.Dataset 类将这些特征传递给模型,这是我使用的代码(注意:X_train、X_val、y_train、y_val都是熊猫数据框)。


import lightgbm as lgb 

        grid = {
            
       
            'boosting': 'gbdt',
            'metric': ['huber', 'rmse' , 'mape'],
            'verbose':1

        }
        
        X_train, X_val, y_train, y_val = train_test_split(X, y)

        cat_features = [ col for col in X_train if col.startswith('cat') ]

        dval = Dataset(X_val, label=y_val, categorical_feature=cat_features)
        dtrain = Dataset(X_train, label=y_train,  categorical_feature=cat_features)
        
        model = lgb.train(      
                                    grid,
                                    dtrain,
                                    valid_sets=[dval],
                                    early_stopping_rounds=100)
                                    

每次调用lgb.train 函数时,我都会收到以下用户警告


 UserWarning: categorical_column in param dict is overridden.

我相信 lightgbm 没有按照应有的方式处理我的分类特征,有人知道如何解决这个问题吗?我是否正确使用了参数?

【问题讨论】:

    标签: python machine-learning lightgbm optuna


    【解决方案1】:

    如果选择这些列的名称(不是索引),请将feature_name 参数添加为documentation states

    也就是说,您的 dvaldtrain 将被初始化如下:

    dval = Dataset(X_val, label=y_val, feature_name=cat_features, categorical_feature=cat_features)
    dtrain = Dataset(X_train, label=y_train, feature_name=cat_features, categorical_feature=cat_features)
    

    【讨论】:

    • 谢谢,我已经切换到索引并且也工作了,你的回答也解决了问题。
    猜你喜欢
    • 2022-10-25
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 2021-02-03
    • 1970-01-01
    • 2021-08-20
    • 2022-07-15
    相关资源
    最近更新 更多