Ошибка в model.frame.default (form = classvariable ~., Data = trainingDataset,: переменные длины отличаются (найдено для 'Sepal.Length') - PullRequest
0 голосов
/ 04 мая 2020

Я пытался посмотреть на подобные вопросы, но не могу понять мою проблему.

Я уже смог завершить свой анализ со случайным лесом (используя каретку), настраивая параметры отдельно. Сейчас я пытаюсь создать функцию, которая будет выполнять мой анализ сразу.

Я создал функцию с двумя входными данными, набором данных и переменной для классификации. Сейчас для простоты я использую набор данных 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')  

У кого-нибудь есть идея почему это не работает? Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...