LightGBM 不接受我数据的数据类型

LightGBM does not accept the dtypes of my data

我正在尝试使用 LGBMClassifier,但出于某种原因,他不接受我的数据类型(不接受所有功能,我测试过)。

当我们查看我的数据时,我们可以清楚地看到所有数据类型都是类别、浮点数或整数 (pd.DataFrame.info())

dtypes: category(275), float64(115), int64(9)

当我最终尝试训练我的 LGBMClassifier 时,我得到以下错误:

ValueError: Series.dtypes must be int, float or bool

有人知道哪里出了问题吗?

具有数据类型类别的特征在 LGBM 中单独处理。当您创建用于训练的数据集时,您可以为这些特征使用关键字 categorical_feature。例如,这看起来像这样。 首先,您可以将所有具有类型类别的功能存储在列表中

categoricals = ["feature1", "feature2",...]

然后在为 LGBM 模型创建训练数据集时使用该列表:

lgb_train = lgb.dataset(train_X,train_y,categorical_feature=categoricals)

您可以对 LGBM 模型的测试数据集执行相同的操作:

lgb_test = lgb.Dataset(test_X,test_y,categorical_feature=categoricals)

我发现错误:

ValueError: Series.dtypes must be int, float or bool

在我的例子中指的是标签,因此指的是唯一传递给 lgb.train() 方法的系列。我的标签有 lgb.train() 无法处理的类型类别。我不得不将 dtype 从 'category' 更改为 'int'。然后成功了。