Я пытался посмотреть на подобные вопросы, но не могу понять мою проблему.
Я уже смог завершить свой анализ со случайным лесом (используя каретку), настраивая параметры отдельно. Сейчас я пытаюсь создать функцию, которая будет выполнять мой анализ сразу.
Я создал функцию с двумя входными данными, набором данных и переменной для классификации. Сейчас для простоты я использую набор данных iris.
RF <- function(data, classvariable) {
# Best mtry
trControl <- trainControl(method = "cv", number = 10,
search = "grid")
set.seed(1234)
tuneGrid <- expand.grid(.mtry = c(1: 3))
RF_mtry <- train(classvariable ~.,
data = dataset,
method = "rf",
metric = "Accuracy",
tuneGrid = tuneGrid,
trControl = trControl,
importance = TRUE,
ntree = 100)
print(RF_mtry)
mtry = 0
for (i in 1:nrow(RF_mtry$results)) {
if (RF_mtry$results[i,2] > mtry) mtry <-
RF_mtry$results[i,2]
}
trial_mtry <- c(1:3)
best_mtry <- trial_mtry[i]
best_mtry
}
После запуска функции
RF(data = iris, classvariable = Species)
я получаю сообщение об ошибке
Error in `[.data.frame`(data, , all.vars(Terms), drop = FALSE) :
undefined columns selected
Пробный запуск код, не помещая его в функцию, поэтому я написал непосредственно радужную оболочку вместо набора данных и Species вместо classvariable, и это работает.
ранее я получал ошибку
Error in model.frame.default(form = classvariable ~ ., data = trainingDataset, :
variable lengths differ (found for 'Sepal.Length')
У кого-нибудь есть идея почему это не работает? Большое спасибо.