Проблема с длиной sparse.matrix - PullRequest
0 голосов
/ 30 августа 2018

Я пытался обучить этот набор данных, используя xgboost. Однако, когда я превращаю его в разреженную матрицу, появляется следующее сообщение об ошибке;

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

Я невероятно запутался, потому что метка была получена из набора данных - поэтому я не понимаю, как она отличается от длины разреженной матрицы.

Из того, что я могу сказать - в фрейме данных содержится 2048 строк, так же как и в метке, полученной из него. Однако, когда я превращаю это в разреженную матрицу - добавляется 300 строк.

Кто-нибудь может придумать, как это исправить?

require(xgboost)
require(methods)
require(Matrix)
require(data.table)
require(vcd)
require(dplyr)

train = read.csv("French Ligue 1 train.csv", header = TRUE, stringsAsFactors = F)
test = read.csv("French Ligue 1 test.csv", header = TRUE, stringsAsFactors = F)

df <- data.table(train, keep.rownames = F)

sparse_matrix <- sparse.model.matrix(Response ~.-1, data = df)

output_vector = sparse_matrix[,Response] == 1

bst <- xgboost(data = sparse_matrix, label = output_vector, max.depth = 4,
               eta = 1, nthread = 2, nrounds = 4, objective = "binary:logistic")
...