LightGBM 警告:没有有意义的特征,因为所有特征值都是常数

Bar*_*sin 2 lightgbm

我尝试过以下简单的代码:

import lightgbm, pandas
params = {'objective': 'multiclass', 'num_classes': 4}
train_df = pandas.DataFrame({'f0': [0, 1, 2, 3] * 5, 'f1': [0, 0, 1] * 6 + [1, 2]}, dtype=float)
train_target = pandas.Series([0, 1, 2, 3] * 5)
train_set = lightgbm.Dataset(train_df, train_target)
model = lightgbm.train(params=params, train_set=train_set)
Run Code Online (Sandbox Code Playgroud)

输出如下:

[LightGBM] [警告] 没有有意义的特征,因为所有特征值都是常数。

[LightGBM] [信息] 总 bin 0

[LightGBM] [Info] 数据数量:20,使用的特征数量:0

[LightGBM] [Info] 从分数-1.386294开始训练

[LightGBM] [Info] 从分数-1.386294开始训练

[LightGBM] [Info] 从分数-1.386294开始训练

[LightGBM] [Info] 从分数-1.386294开始训练

[LightGBM] [警告] 停止训练,因为没有更多满足分割要求的叶子

我的特征显然不是一成不变的。

怎么了?

我在 Ubuntu 16.04 上运行 Python 3.5.2。

Bar*_*sin 7

我想到了。

问题是默认值min_data_in_leaf是20,我没有改。

我的数据只有 20 行。因此,LightGBM 报告称无法对其进行分割,因为每次分割的最小样本数为 20。

(事实上​​,它不需要分割它,因为解决方案是一棵树只有一片叶子。但显然 LightGBM 无论如何都在检查分割的可能性。)

我增加了行数,LightGBM 训练得很好。