Невозможно создать итератор - igraph - R - PullRequest
1 голос
/ 13 февраля 2020

Я пытаюсь создать алгоритм изолированного леса, используя пакет одиночества в R. Когда я вызываю метод fit в R, я получаю следующую ошибку:

iso <- isolationForest$new()
isofit = iso$fit(data)

Ошибка в igraph :: дали (treegraph, v = 1L, to = tnValues ​​+ 1L, mode = "out"): у итераторов. c: 759: невозможно создать итератор, недопустимый идентификатор вершины, недопустимый идентификатор вершины

Что я делаю здесь не так. Я застрял и не могу тренировать свою модель. Помощь приветствуется

1 Ответ

1 голос
/ 05 марта 2020

Попытайтесь увеличить mtry

iso$mtry <- 5 # default value is 1

После столкновения с той же проблемой и копания в течение некоторого времени, я думаю, что я нашел проблему.

глубоко в функции подбора, вызов делается для функции solitude :: TerminalNodesDepth, которая, в свою очередь, делает этот вызов:

future.apply::future_lapply(1:num_trees, function(x) terminalNodesDepthPerTree(ranger::treeInfo(model, x)))

Функция "TerminalNodesDepthPerTree" извлекает что-то из каждого дерева в обученной модели рейнджера, используя ranger :: treeInfo.

Однако для некоторых деревьев разбиения нет: поэтому treeInfo возвращает:

  nodeID leftChild rightChild splitvarID splitvarName splitval terminal prediction
1      0        NA         NA         NA         <NA>       NA     TRUE    1385.02

, что приводит к ошибке!

Я решил проблему, увеличив mtry по умолчанию 1.

надеюсь, это поможет:)

...