Ошибка при переводе модели Random Forest в правила с использованием пакета iTrees - PullRequest
0 голосов
/ 11 декабря 2018

Это немного неясно, но я надеюсь, что кто-то может помочь.У меня возникли проблемы с преобразованием модели Random Forest в правила с использованием пакета iTrees:

В приведенном ниже примере выдается ошибка: Ошибка в векторе ("list", rf $ ntree): неверный аргумент "length"

require(inTrees)

require(caret)
require(RRF)

x1 <- read.table(header=T, text="B  P1  P2  P3  P4  P5  P6  P7  P8  P9  P10 P11 P12 P13 Target
B1  a   a   a   g   g   g   g   g   g   g   g   g   a   9
                 B2 a   g   a   g   g   g   g   g   g   g   g   g   j   16
                 B3 a   g   a   g   g   g   g   g   g   g   g   g   a   13
                 B4 b   i   b   i   i   i   i   i   i   i   i   i   b   10
                 B5 a   f   a   f   f   f   f   f   f   f   f   f   a   8
                 B6 a   g   a   g   g   g   g   g   g   g   g   g   a   8
                 B7 b   b   b   h   i   i   i   i   i   i   i   i   b   29
                 B8 e   g   a   g   g   g   g   g   g   g   g   g   j   20
                 B9 a   g   a   g   g   g   g   g   g   g   g   g   a   14
                 B10    a   a   g   a   a   j   g   g   g   g   g   g   a   22
                 B11    a   h   a   h   h   h   h   h   h   h   h   h   a   25
                 B12    a   f   a   f   f   f   f   f   f   f   f   f   j   11
                 B13    a   b   a   g   g   g   g   g   g   g   g   g   a   18
                 B14    a   a   a   g   g   g   g   g   g   g   g   g   a   13
                 B15    b   g   b   i   i   i   i   i   i   i   i   i   j   21
                 B16    a   g   a   g   g   g   g   g   g   g   g   g   a   17
                 B17    d   j   d   j   j   j   j   j   j   j   j   j   d   18
                 B18    a   g   a   g   g   g   g   g   g   g   g   g   a   18
                 B19    a   g   a   g   g   g   g   g   g   g   g   g   j   14
                 B20    a   g   a   g   g   g   g   g   g   g   g   g   a   13
                 ")

#View(x1)

#Partition
set.seed(3456)
trainIndex <- createDataPartition(x1$`Target`, p = .8, 
                                  list = FALSE, 
                                  times = 1)

dataTrain <- x1[ trainIndex,]
dataTest  <- x1[-trainIndex,]


# Model with caret
fitControl <- trainControl(## 10-fold CV
  method = "repeatedcv",
  number = 10,
  ## repeated ten times
  repeats = 10,
  savePredictions = "all"
)

set.seed(825)
RFFit1 <- train(Target ~ ., dataTrain, 
                method = "RRF",
                metric = "RMSE",
                trControl = fitControl,
                verbose = FALSE
)

RFpred1 <- predict(RFFit1, dataTest, type = "raw")


#Translate model to list
treeList <- RF2List(RFFit1)

Когда я проверяю вывод mdoel, кажется, что нет столбца с именем rf $ ntree.Мне интересно, есть ли какое-то отношение к тому факту, что я использую перекрестную проверку с каретой?Если да, есть ли способ использования перекрестной проверки и создания объекта RRF, чтобы его можно было интерпретировать с помощью RF2List?

Любая помощь, как всегда, ценится

Воля.

...