Я пытался обучить этот набор данных, используя 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")