Как ранее указывал @LyzandeR это не так легко сделать это на объект J48
напрямую. Как правило, объекты, возвращаемые функциями фитинга в RWeka
, обычно содержат относительно немного информации на стороне R (например, только вызов и установленные предсказания). Основным ингредиентом обычно является ссылка на объект Java, построенный Weka, к которому собственные методы Weka могут быть применены на стороне Java через .jcall
, а затем возвращены в R.
Однако для деревьев J48
легко преобразовать информацию со стороны Java в объект R, для которого доступны стандартные функции и методы. Пакет partykit
обеспечивает функцию принуждения, которая преобразует J48
деревьев в объекты constparty
(рекурсивные перегородки с постоянными вставками в листьях). Затем такие методы, как length()
, width()
, или depth()
, могут использоваться для запроса количества узлов, листьев и глубины дерева соответственно.
library("RWeka")
fit <- J48(Species ~ ., data = iris)
library("partykit")
p <- as.party(fit)
length(p)
## [1] 9
width(p)
## [1] 5
depth(p)
## [1] 4
Кроме того, predict()
, plot()
, print()
и многие другие инструменты доступны для party
объекта.
Я бы рекомендовал использовать этот подход для синтаксического анализа текста, предложенного @LyzandeR, потому что преобразование as.party
не полагается на потенциально подверженные ошибкам вычисления текста. Вместо этого он внутренне вызывает собственный генератор Weka (через .jcall
), а затем анализирует его на структуру constparty
.
это тоже может быть чем-то вроде Data Science SO или Cross Validated, поскольку может быть лучший вариант, чем «механический» – hrbrmstr