准备要在XGBoost中使用的数据时出错

时间:2018-09-09 12:56:05

标签: r xgboost

我正在尝试在R中使用xgboost训练x并预测y。我已经阅读了一些有关如何创建DMatrix(需要标签)的说明。但是,这不是分类问题/数据集。我想知道最简单的解决方案是以适合xgboost的格式获取数据。有人知道快速解决方案吗?

在相关的情况下,我包括以下数据 格式为dput()

谢谢

df_1

错误:

rm(list = ls()) #clears the workspace


library(caret)
library(ggplot2)
library(doParallel)
library(tidyverse)
library(xgboost)
library(readr)
library(stringr)
library(car)

# read data
proj_path = "P:/R"
Macro <- read.csv("P:/Earnest/Old/R/InputFull.csv")
x <- Macro[1:31,3:21]
x <- data.matrix(x)
x
y <- Macro[1:31,2:2]
y <- as.matrix(y)
y
t <- Macro[32:32,3:21]
t <- as.matrix(t)
t


xgb <- xgboost(data = x,
               label = y, 
               eta = 0.1,
               max_depth = 15, 
               nround=25, # max number of boosting iterations
               subsample = 0.5,
               colsample_bytree = 0.5,
               seed = 1,
               eval_metric = "merror",
               objective ="reg:linear",
               num_class = 12,
               nthread = 3
)

Error in xgb.iter.update(bst$handle, dtrain, iteration - 1, obj) : 
  [18:32:05] amalgamation/../src/objective/regression_obj.cc:44: Check failed: preds->Size() == info.labels_.size() (372 vs. 31) labels are not correctly providedpreds.size=372, label.size=31

1 个答案:

答案 0 :(得分:0)

您的数据没有问题,但您的xgboost参数没有问题。

eval_metric =“ merror”并且num_class = 12用于多类分类,并且与回归不兼容。通过使用以下代码替换xgboost代码来删除它们,它应该可以正常工作。

xgb <- xgboost(data = x,
               label = y, 
               eta = 0.1,
               max_depth = 15, 
               nround=25, # max number of boosting iterations
               subsample = 0.5,
               colsample_bytree = 0.5,
               seed = 1,
               objective ="reg:linear",
               nthread = 3
)