下面是我正在实现的一段代码:
train.data <- data.frame(cbind(all[1:end_trn,-1],Response))
#model building
train.task <- makeClassifTask(data = train.data[1:round(end_trn*train.fact),], target = "Response")
test.task <- makeClassifTask(data = train.data[(round(end_trn*train.fact)+1):end_trn,], target = "Response")
lrn = makeLearner("classif.xgboost")
lrn$par.vals = list(nrounds = 10,
print.every.n = 5,
objective = "multi:softmax",
#num_class = 9,
depth = 4,
eta = 0.05,
colsample_bytree = 0.66,
min_child_weight = 4,
subsample = 0.91)
model <- train(lrn, train.task)
pred <- predict(model, train.task)
在执行代码的最后一个命令时,我面临以下错误:
Error in data.frame(id = 1:47505, truth = c(8L, 4L, 8L, 8L, 8L, 8L, 8L, :
arguments imply differing number of rows: 47505, 5938
我为一个简单的iris数据运行了相同的脚本,它运行得很好。"自变量意味着行数不同:475055938"是什么意思?训练集有47505行,5938行表示什么?*使用的库是"mlr"
提前感谢,
您的一些数据可能包含NA,并且预测函数不会估算学习分类器使用的NA值。在这种情况下,错误消息可以重新表述为:"超过47505行的5938行是有效的"。丢弃包含NA的第一个数据。