как определить название модели в для l oop? - PullRequest
1 голос
/ 30 марта 2020

Я хочу обучить случайный лес на разных выборках. образец 1 дает rf1, образец 2 дает rf2 и т. д. c.

НО этот код не работает (объект ошибки типа 'замыкание' не может быть подмножеством)

for (i in 1:3) {
       rf$i <- train(Y~.,data=trainingData,method="rf",
              ntree = 100,
              tuneGrid=data.frame(mtry = mtry),
              trControl = controle,
              metric='ROC')
}

Как я могу создать n моделей случайных лесов? С уважением, Лои c

1 Ответ

0 голосов
/ 31 марта 2020

Это не работает, потому что rf еще не существует, и вы не можете установить его подмножество.

1. Используйте список в качестве контейнера

Должно работать следующее:

# define the length of your random forest trials
N = 3
rf = vector( "list", N)
for (i in seq_len( N ) {
   rf[[ i ]] <- train( Y ~. , data = trainingData, method = "rf",
          ntree = 100,
          tuneGrid=data.frame(mtry = mtry),
          trControl = controle,
          metric='ROC')
}

Приведенный выше код хранит список rf, который содержит три элемента в соответствии с N. Вы можете получить доступ к каждому объекту с помощью rf[[ 1 ]], rf[[ 2 ]], rf[[ 3 ]].

2. Храните объекты независимо друг от друга

Если вы хотите физически хранить независимые rf объекты в вашей глобальной среде, вы должны использовать assign() следующим образом:

# define the length of your random forest trials
N = 3
for (i in seq_len( N ) {
       assign( paste0( "rf", i) ,
               train( Y ~. , 
                      data = trainingData, method = "rf",
                      ntree = 100,
                      tuneGrid=data.frame(mtry = mtry),
                      trControl = controle,
                      metric='ROC')
    }

Это сохраняет три объекта rf1, rf2 и rf3 в вашей среде, и вы можете работать с ними независимо.

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