OPGBM集成提供分类特征错误

2024-06-26 14:20:13 发布

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

我使用opgbm集成创建了一个模型,我的训练集有一些分类特性,我使用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.

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


Tags: in模型分类traincolval特性dataset
1条回答
网友
1楼 · 发布于 2024-06-26 14:20:13

在选择这些列的名称(而不是索引)的情况下,还要添加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)

相关问题 更多 >