我尝试过以下简单的代码:
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。
我想到了。
问题是默认值min_data_in_leaf是20,我没有改。
我的数据只有 20 行。因此,LightGBM 报告称无法对其进行分割,因为每次分割的最小样本数为 20。
(事实上,它不需要分割它,因为解决方案是一棵树只有一片叶子。但显然 LightGBM 无论如何都在检查分割的可能性。)
我增加了行数,LightGBM 训练得很好。
| 归档时间: |
|
| 查看次数: |
4079 次 |
| 最近记录: |