試圖從clojure使用weka,我試圖使用clojure的java interop功能將this howto guide從weka wiki轉換爲clojure。如何在與java接口時顯式轉換爲clojure
這一直運作良好,到目前爲止,除了一種情況,似乎在Clojure的反射機制不能找到合適的方法來調用 - 我有:
(def c-model (doto (NaiveBayes.) (.buildClassifier is-training-set)))
後來這將被調用所述Evaluation
類的.evaluateModel
方法:
(.evaluateModel e-test c-model is-testing-set)
其中e-test
是weka.classifiers.Evaluation
型的,並且根據該their api documentation方法採用的類型兩個參數3210和Instances
我從Clojure的獲得雖然是IllegalArgumentException No matching method found: evaluateModel for class weka.classifiers.Evaluation clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:53)
- 我想,這是因爲c-model
實際上是NaiveBayes
型的,雖然它也應該是一個Classifier
- 它是,根據instance?
。
我試着用cast
鑄造無濟於事,從我的理解來看,這更像是一個類型斷言(當然,沒有問題的通過),而不是真正的clojure。是否有另一種方法明確告訴clojure在java interop方法調用中投入哪些類型? (請注意,我在上面鏈接的原始指南還使用從NaiveBayes
到Classifier
有明確的轉換)
全部代碼在這裏:/http://paste.lisp.org/display/129250
我想知道如何處理可變參數,但沒有遇到這個答案 - 謝謝! –