从这里得到提示!我正在通过 RJB 使用来自 Ruby 的 weka 的分类器库。
我希望能够从 .arff 文件创建一个分类器,并对其进行 10 倍交叉验证以生成混淆矩阵,如Weka wiki 中所述。
以下是涉及的基本代码。
# creating the classifier
Rjb::load("./weka.jar", jvmargs=["-Xmx2000M"])
classifier = Rjb::import("weka.classifiers.bayes.NaiveBayes").new
# importing the data
data_src = Rjb::import("java.io.FileReader").new("./the_data.arff")
data = Rjb::import("weka.core.Instances").new(data_src)
evaluation = Rjb::import("weka.classifiers.Evaluation").new(data)
folds = Rjb::import('java.lang.Integer').new(10)
rand = Rjb::import("java.util.Random").new(1)
evaluation.crossValidateModel(classifier,
data,
folds,
rand )
print evaluation.toMatrixString()
从上面的 weka wiki 链接我可以看出:这应该可以。但...
Fail: unknown method name `crossValidateModel' (RuntimeError)
据我了解,这通常意味着没有为所讨论的方法提供正确的参数,但我看不出情况会如何。
evaluation.java_methods的输出包括crossValidateModel([Ljava.lang.String;Lweka.core.Instances;I[Ljava.lang.String;Ljava.util.Random;, Lweka.classifiers.Classifier;Lweka.core.Instances;ILjava.util.Random;[Ljava.lang.Object;])
我不确定如何解释。
有没有人知道我需要做什么?
编辑:虽然我无法解决这里提出的问题,但事实证明,我可以通过这里描述的 JRuby 重新开始来实现我想要的。感谢 michaeltwofish 的提示 :)