Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据$update_params(params=params)中出错:[LightGBM][Fatal]无法在构造数据集句柄后更改max_bin_R_Machine Learning_Lightgbm - Fatal编程技术网

数据$update_params(params=params)中出错:[LightGBM][Fatal]无法在构造数据集句柄后更改max_bin

数据$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

我在RStudio上下载了lightgbm软件包,并试图用它运行一个模型。 该脚本基于

其功能是:

> 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.