Я пытаюсь запустить XGBoost в R, но сталкиваюсь с некоторыми проблемами - PullRequest
2 голосов
/ 13 февраля 2020

У меня есть набор данных из 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.

1 Ответ

1 голос
/ 13 февраля 2020

test[,"GRL"] возвращает data.frame, а XGBoost нужна метка, чтобы быть вектором.

Просто используйте teste$GRL или test[["GRL"]]. Вы также должны сделать то же самое для учебного набора данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...