Я хотел бы построить результат модели ID3. Похоже, у него нет модуля сюжета по умолчанию ни в WEKA, ни в R.
Есть ли уже готовый код для этого? (или формат дерева ниже имеет стандартное имя, для которого я мог бы легко найти синтаксический анализатор?)
Вот некоторый базовый код:
# I'm getting a post from this: https://en.wikipedia.org/wiki/ID3_algorithm
## load RWeka
if(!require(RWeka)) install.packages("RWeka")
library(RWeka)
## look for a package providing id3
WPM("refresh-cache")
WPM("list-packages", "available") ## look for id3
## install package providing id3
WPM("install-package", "simpleEducationalLearningSchemes")
## load the package
WPM("load-package", "simpleEducationalLearningSchemes")
## make classifier
ID3 <- make_Weka_classifier("weka/classifiers/trees/Id3")
## test it out.
DF2 <- read.arff(system.file("arff", "contact-lenses.arff",
package = "RWeka"))
ID3(`contact-lenses` ~ ., data = DF2)
Вот результат:
Id3
tear-prod-rate = reduced: none
tear-prod-rate = normal
| astigmatism = no
| | age = young: soft
| | age = pre-presbyopic: soft
| | age = presbyopic
| | | spectacle-prescrip = myope: none
| | | spectacle-prescrip = hypermetrope: soft
| astigmatism = yes
| | spectacle-prescrip = myope: hard
| | spectacle-prescrip = hypermetrope
| | | age = young: hard
| | | age = pre-presbyopic: none
| | | age = presbyopic: none
Структура дерева очень проста для понимания. Любые предложения о том, как разобрать этот? (может быть, похоже на ответ здесь?)
Спасибо.
graph
, который вызывается через.jcall(obj$classifier, "S", "graph")
, но он не работает для классификатора Id3.Id3
действительно отвечает на.jcall(x$classifier, "S", "toString")
, который используется для печати текстовой версии дерева, которое вы видите. Похоже, он просто не делится этой информацией с R; насколько я могу судить, все это заперто в мире JAVA. (но я ни в коем случае не эксперт Weka). - person MrFlick   schedule 04.09.2014