r - 使用 LightGBM 进行多分类

标签 r classification multiclass-classification lightgbm

我正在使用最新版本的 LightGBM 来解决多分类问题。当我将目标切换为“多类”时,会出现此错误;

Error in data$update_params(params) : 
  [LightGBM] [Fatal] Number of classes should be specified and greater than 1 for multiclass training

我留下了一个可重现的示例来表明我的方式

catnames <- names(purrr::keep(train_x,is.factor))

dtrain <- lgb.Dataset(as.matrix(train_x), label = train_y,categorical_feature = catnames)
data_file <- tempfile(fileext = ".data")
lgb.Dataset.save(dtrain, data_file)
dtrain <- lgb.Dataset(data_file)
lgb.Dataset.construct(dtrain)

model <- lgb.train(data=dtrain,
                   objective = "multiclass",
                   alpha = 0.1,
                   nrounds = 1000,
                   learning_rate = .1
                   )

尝试将我的目标 (train_y) 保存为因素,但没有任何变化。

最佳答案

在 LightGBM 中使用多类目标时,您需要传递另一个参数来告诉学习者要预测的类数。

所以,它可能看起来应该更像这样:

model <- lgb.train(data=dtrain,
                   objective = "multiclass",
                   num_classes = INSERT NUMBER OF TARGET CLASSES HERE,
                   alpha = 0.1,
                   nrounds = 1000,
                   learning_rate = .1,
                   )

我的经验更多是使用 python API,因此可能(如果这不起作用)您需要以列表的形式传递 num_class 参数作为 lgb.train 中的 params 关键字参数。

关于r - 使用 LightGBM 进行多分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63889641/

相关文章:

r - 掷骰子数直到达到停止值

RMarkdown 似乎无法在 Tabs 中生成 Tabs

image-processing - 在线医学图像处理大挑战

machine-learning - KNN 中 k 的值

machine-learning - 从短信中提取主题

python - 保存文本分类模型后获取真实的类标签

r - 从 r 中的数据框中删除每第 n 列

r - 否定dplyr管道中的 `!`

machine-learning - k-NN分类器的预测方差和模型偏差

deep-learning - 我应该使用什么样的损失函数来解决这个多类多标签(?)问题?