在通过Caret加载RWeka软件包的已保存M5实现后,我想出了一个错误。
.jcall(o,“Ljava / lang / Class;”,“getClass”)出错:
RcallMethod:尝试调用NULL对象的方法。
重现错误:
library(caret); library(RWeka)
data(GermanCredit)
myModel <- train(Duration~Amount, data=GermanCredit, method="M5")
predict(myModel, GermanCredit[1,]) # Works.
save(myModel, file="myModel.rda")
load("myModel.rda")
predict(myModel, GermanCredit[1,]) # Produces the RcallMethod error.
This post表示RWeka对象是对Java对象的引用,并且必须序列化该对象才能正确保存/加载。
但是,我找不到合适的命令将其扩展到Caret包的实现。
答案 0 :(得分:3)
http://one-line-it.blogspot.tw/2013/03/r-store-rweka-model-to-file.html
library(RWeka)
j48.model <- J48(formula=class ~ ., data=data)
library(rJava)
.jcache(j48.model$classifier)
save(j48.model, file="j48.model.rda")
这可能会对你有帮助。
顺便说一句 有没有方法可以将J48 Rweka分类器变成规则?