在R中运行LightGBM时出错,“不支持从'data.frame'进行构造。“

问题描述 投票:1回答:1

我终于在R中安装了LightGBM,但无法完全正常工作。以下是使用虹膜数据集的简单可重现示例。

我正在Windows 10和lightgbm_2.2.4上使用R版本3.5.2。

library(lightgbm)
library(caTools)
set.seed(42) 

# Prepare the dataset for binary classification
iris$label <- 0
iris$label[iris$Species=="setosa"] <- 1
iris <- iris[,!(names(iris) %in% "Species")]

# Split into train & validation set
sample <- sample.split(iris$label, SplitRatio = .75)
train <- subset(iris, sample == TRUE)
valid <- subset(iris, sample == FALSE)

X_train <- train[,!(names(train) %in% "label")]
X_valid <- valid[,!(names(valid) %in% "label")]
y_train <- train$label
y_valid <- valid$label

# Train LightGBM
dtrain <- lgb.Dataset(data = X_train, label = y_train)
dvalid <- lgb.Dataset(data = X_valid, label = y_valid)

params <- list(objective = "binary",
           verbose = 1,
           seed = 42)

lgb_model <- lgb.train(params, dtrain, 200, list(eval = dvalid), 
verbose_eval=200, early_stopping_round=10)

运行lgb.train时,出现以下错误消息:“ data $ construct()中的错误:lgb.Dataset.construct:不支持从'data.frame'进行构造。

我不知道是什么导致了此错误以及如何解决。非常感谢您的帮助。

r lightgbm
1个回答
0
投票

lgb.Dataset仅接受矩阵,因此

 dtrain <- lgb.Dataset(data = as.matrix(X_train), label = y_train)
 dvalid <- lgb.Dataset(data = as.matrix(X_valid), label = y_valid)

应该工作

© www.soinside.com 2019 - 2024. All rights reserved.