[我正在尝试在R中运行XGBoost,但遇到了一些问题

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

我有一个包含25个变量和248行的数据集。有8因子变量,其余为整数和数字。我正在尝试运行XGBoost。我已经完成以下代码:-

# Partition Data
     set.seed(1234)
     ind <- sample(2, nrow(mission), replace = T, prob = c(0.7,0.3))
     train <- mission[ind == 1,]
     test <- mission[ind == 2,]

   # Create matrix - One-Hot Encoding for Factor variables
     trainm <- sparse.model.matrix(GRL ~ .-1, data = train)
     head(trainm)
     train_label <- train[,"GRL"]
     train_matrix <- xgb.DMatrix(data = as.matrix(trainm), label = train_label)

     testm <- sparse.model.matrix(GRL~.-1, data = test)
     test_label <- test[,"GRL"]
     test_matrix <- xgb.DMatrix(data = as.matrix(testm),label = test_label)

这里的响应变量是“ GRL”,我正在运行test_label <- test[,"GRL"]上面的代码正在执行,但是当我尝试在xgb.DMatrix中使用它时,遇到以下错误:

Error in setinfo.xgb.DMatrix(dmat, names(p), p[[1]]) : 
   The length of labels must equal to the number of rows in the input data

我已将数据划分为70:30。

r xgboost
1个回答
1
投票

test[,"GRL"]返回一个data.frame,并且XGBoost需要该标签为向量。

只需使用teste$GRLtest[["GRL"]]。您还需要对训练数据集执行相同的操作]

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