我正在尝试在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
答案 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
)