2

通过 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.

这篇文章表明 RWeka 对象是对 Java 对象的引用,并且该对象必须被序列化才能正确保存/加载。

但是,我找不到将其扩展到 Caret 包实现的正确命令。

4

1 回答 1

4

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 分类器变成规则的方法?

于 2015-05-15T06:43:02.917 回答