J48 partykit доступ к плоскому списку

Я хотел бы получить доступ к отдельным узлам в представлении плоского списка объекта party. То есть я хотел бы получить узел, его сплит и детей и любые другие свойства. Я новичок в partykit (только начал изучать), поэтому не уверен, что делаю неправильно.

require("partykit")
require("RWeka")
data("PimaIndiansDiabetes", package = "mlbench")
j48 <- J48(diabetes ~ ., data=PimaIndiansDiabetes)
j48_party <- as.party(j48)
j48_party_list <- as.list(j48_party)
j48_party_list[1:3]
## Error: length(i) == 1 & is.numeric(i) is not TRUE

Спасибо


person Krrr    schedule 25.01.2016    source источник


Ответы (1)


В partykit есть только метод as.list() для partynode объектов, но не для всего party объекта. Первый содержит только рекурсивный список идентификаторов узлов, идентификаторов переменных, разбиений и т. д. Все фактические имена переменных, данные, подходящие значения и т. д. хранятся не в partynode, а в party.

Таким образом, as.list(j48_party) на самом деле не создает плоский список, но возвращает объекты j48_party "как есть", потому что это внутренне список (содержащий node, data, fitted, terms и т. д.).

Таким образом, плоский список может быть создан только для as.list(j48_party$node), но я предполагаю, что в нем не будет той информации, которую вы ищете. Возможно, nodeapply() поможет вам получить то, что вы хотите... или некоторые другие примеры в виньетках.

person Achim Zeileis    schedule 25.01.2016
comment
Спасибо. виньетка(constparty, package = partykit) очень полезна! - person Krrr; 26.01.2016