微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

LightGBM的多分类

如何解决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的了解更多,所以可能是(如果这不起作用)您需要以lgb.train中的params关键字参数的列表形式传递num_class参数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。