数据$update_params(params=params)中出错:[LightGBM][Fatal]无法在构造数据集句柄后更改max_bin
我在RStudio上下载了lightgbm软件包,并试图用它运行一个模型。 该脚本基于 其功能是:数据$update_params(params=params)中出错:[LightGBM][Fatal]无法在构造数据集句柄后更改max_bin,r,machine-learning,lightgbm,R,Machine Learning,Lightgbm,我在RStudio上下载了lightgbm软件包,并试图用它运行一个模型。 该脚本基于 其功能是: > fit.lightgbm function (training, testing) { train <- as.matrix(training) test <- as.matrix(testing) coltrain <- ncol(train) coltest <- ncol(test) dtrain <- lightgbm::lgb
> fit.lightgbm
function (training, testing)
{
train <- as.matrix(training)
test <- as.matrix(testing)
coltrain <- ncol(train)
coltest <- ncol(test)
dtrain <- lightgbm::lgb.Dataset(train[, 2:coltrain], label = train[,
1])
lightgbm::lgb.Dataset.construct(dtrain)
dtest <- lightgbm::lgb.Dataset.create.valid(dtrain, test[,2:coltest], label = test[, 1])
valids <- list(test = dtest)
params <- list(objective = "regression", metric = "rmse")
modelcv <- lightgbm::lgb.cv(params, dtrain, nrounds = 5000,
nfold = 10, valids, verbose = 1, early_stopping_rounds = 1000,
record = TRUE, eval_freq = 1L, stratified = TRUE, max_depth = 4,
max_leaf = 20, max_bin = 50)
best.iter <- modelcv$best_iter
params <- list(objective = "regression_l2", metric = "rmse")
model <- lightgbm::lgb.train(params, dtrain, nrounds = best.iter,
valids, verbose = 0, early_stopping_rounds = 1000, record = TRUE,
eval_freq = 1L, max_depth = 4, max_leaf = 20, max_bin = 50)
print(paste0("End training"))
return(model)
}
只有将max_bin更改为max_bin=255时才没有错误
查阅了以下文件:
对应该做什么有什么想法/建议吗?这是交叉发布到的,已经在那里得到了回答
LightGBM中Dataset对象的构造处理了一些重要的预处理步骤(请参阅),这些步骤发生在训练之前,并且在构造之后无法更改
将max_bin=50
传递到lgb.Dataset()
而不是原始帖子代码中的lgb.cv()
/lgb.train()
将导致成功的培训,而不会出现此错误
lightgbm <- fit.lightgbm(training,testing)
Error in data$update_params(params = params) :
[LightGBM] [Fatal] Cannot change max_bin after constructed Dataset handle.