Аналогичный вопрос был задан, однако ссылка в ответе указывает на пример случайного леса , это, кажется, не работает в моем случае.
Вот пример того, что я пытаюсь сделать:
gbmGrid <- expand.grid(interaction.depth = c(5, 9),
n.trees = (1:3)*200,
shrinkage = c(0.05, 0.1))
fitControl <- trainControl(
method = "cv",
number = 3,
classProbs = TRUE)
gbmFit <- train(strong~.-Id-PlayerName, data = train[1:10000,],
method = "gbm",
trControl = fitControl,
verbose = TRUE,
tuneGrid = gbmGrid)
gbmFit
Все идет нормально, я получаю лучшие параметры. Теперь, если я сделаю прогноз:
predictStrong = predict(gbmFit, newdata=train[11000:50000,])
Я получаю двоичный вектор прогнозов, и это хорошо:
[1] 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 1 ...
Однако, когда я пытаюсь получить вероятности, я получаю сообщение об ошибке:
predictStrong = predict(gbmFit, newdata=train[11000:50000,], type="prob")
Error in `[.data.frame`(out, , obsLevels, drop = FALSE) :
undefined columns selected
Где, кажется, проблема?
Дополнительная информация:
traceback()
5: stop("undefined columns selected")
4: `[.data.frame`(out, , obsLevels, drop = FALSE)
3: out[, obsLevels, drop = FALSE]
2: predict.train(gbmFit, newdata = train[11000:50000, ], type = "prob")
1: predict(gbmFit, newdata = train[11000:50000, ], type = "prob")
Версии:
R version 3.1.0 (2014-04-10) -- "Spring Dance"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-unknown-linux-gnu (64-bit)
caret version: 6.0-29
РЕДАКТИРОВАТЬ: я видел эту тему, и я не получаю сообщения об ошибке относительно имен переменных, хотя у меня есть несколько имен переменных с символами подчеркивания, которые я предполагаю допустимыми, поскольку я использую make.names
и получаю те же имена, что и оригинал.
colnames(train) == make.names(colnames(train))
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
train
? Без него этот код не запускается. - person MrFlick   schedule 06.06.2014str(train$strong)
. Я подозреваю, что вы выполняете регрессию (а не классификацию), поскольку прогнозируемые значения кажутся числами. Для классификации сделайтеstrong
фактором с уровнями, отличными от 0 и 1. - person topepo   schedule 07.06.2014