LightGBM 'Using categorical_feature in Dataset.' 警告?
LightGBM 'Using categorical_feature in Dataset.' Warning?
根据我对 LightGBM 文档的阅读,应该在 Dataset 方法中定义分类特征。所以我有以下代码:
cats=['C1', 'C2']
d_train = lgb.Dataset(X, label=y, categorical_feature=cats)
但是,我收到以下错误消息:
/app/anaconda3/anaconda3/lib/python3.7/site-packages/lightgbm/basic.py:1243: UserWarning: Using categorical_feature in Dataset.
warnings.warn('Using categorical_feature in Dataset.')
为什么我会收到警告消息?
我推测您是在调用 lgb.train
时收到此警告的。这个函数也有参数 categorical_feature
,它的默认值是 'auto'
,这意味着从 pandas.DataFrame
中获取分类列(documentation). The warning, which is emitted at this line,表明尽管 lgb.train
有要求自动识别分类特征,LightGBM 将使用数据集中指定的特征。
为避免警告,您可以为 lgb.Dataset
和 lgb.train
提供相同的参数 categorical_feature
。或者,您可以使用 categorical_feature=None
构建数据集,并仅在 lgb.train
.
中指定分类特征
如用户 andrey-popov
所述,您可以使用 lgb.train
的 categorical_feature
参数来消除此警告。
下面是一个简单的示例,其中包含一些代码,您可以如何操作:
# Define categorical features
cat_feats = ['item_id', 'dept_id', 'store_id',
'cat_id', 'state_id', 'event_name_1',
'event_type_1', 'event_name_2', 'event_type_2']
...
# Define the datasets with the categorical_feature parameter
train_data = lgb.Dataset(X.loc[train_idx],
Y.loc[train_idx],
categorical_feature=cat_feats,
free_raw_data=False)
valid_data = lgb.Dataset(X.loc[valid_idx],
Y.loc[valid_idx],
categorical_feature=cat_feats,
free_raw_data=False)
# And train using the categorical_feature parameter
lgb.train(lgb_params,
train_data,
valid_sets=[valid_data],
verbose_eval=20,
categorical_feature=cat_feats,
num_boost_round=1200)
根据我对 LightGBM 文档的阅读,应该在 Dataset 方法中定义分类特征。所以我有以下代码:
cats=['C1', 'C2']
d_train = lgb.Dataset(X, label=y, categorical_feature=cats)
但是,我收到以下错误消息:
/app/anaconda3/anaconda3/lib/python3.7/site-packages/lightgbm/basic.py:1243: UserWarning: Using categorical_feature in Dataset. warnings.warn('Using categorical_feature in Dataset.')
为什么我会收到警告消息?
我推测您是在调用 lgb.train
时收到此警告的。这个函数也有参数 categorical_feature
,它的默认值是 'auto'
,这意味着从 pandas.DataFrame
中获取分类列(documentation). The warning, which is emitted at this line,表明尽管 lgb.train
有要求自动识别分类特征,LightGBM 将使用数据集中指定的特征。
为避免警告,您可以为 lgb.Dataset
和 lgb.train
提供相同的参数 categorical_feature
。或者,您可以使用 categorical_feature=None
构建数据集,并仅在 lgb.train
.
如用户 andrey-popov
所述,您可以使用 lgb.train
的 categorical_feature
参数来消除此警告。
下面是一个简单的示例,其中包含一些代码,您可以如何操作:
# Define categorical features
cat_feats = ['item_id', 'dept_id', 'store_id',
'cat_id', 'state_id', 'event_name_1',
'event_type_1', 'event_name_2', 'event_type_2']
...
# Define the datasets with the categorical_feature parameter
train_data = lgb.Dataset(X.loc[train_idx],
Y.loc[train_idx],
categorical_feature=cat_feats,
free_raw_data=False)
valid_data = lgb.Dataset(X.loc[valid_idx],
Y.loc[valid_idx],
categorical_feature=cat_feats,
free_raw_data=False)
# And train using the categorical_feature parameter
lgb.train(lgb_params,
train_data,
valid_sets=[valid_data],
verbose_eval=20,
categorical_feature=cat_feats,
num_boost_round=1200)