hereからヒントを得てください!私はwekaのRubyからRJB経由のクラシファイアのライブラリを利用しています。Rubyからクラシファイアをクロスバリデーションするwekaの取得
私は.arffファイルからクラシファイアを作成し、それと10倍のクロスバリデーションを実行して、in the 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;])
が含まれています。
誰も私がする必要があることを知っていますか?
編集:私はここに提起として、問題を解決することができませんでしたが、それは私がhereを説明したのJRubyをやり直すことにより、欲しかったものを達成することができたことが判明。先端のためにmichaeltwofishする:)
"クラシファイア"のクラスを印刷できますか? print classifier.getClass()と同様です。 Javaのオーバーロードが期待通りに機能しないようです。返信ありがとう! –
'p classifier.getClass()#=> # ' は役に立ちますか? –
Nat
RJBを使用する必要がある理由があるのかどうか分かりませんが、JRubyのWekaを使って大きな効果を得ました。 – michaeltwofish