在程序中使用weka时出错

时间:2016-04-06 14:32:50

标签: macos filter clojure svm weka

(defn weka-feature-reduce [in out]
  (sh "java" "-cp" "/Applications/weka-3-7-13/weka.jar"
  "weka.filters.supervised.attribute.AttributeSelection"
  "-E" "weka.attributeSelection.InfoGainAttributeEval"
  "-S" "weka.attributeSelection.Ranker -N 300"  
  "-i" in "-o" out "-c" "1"))

我有这个clojure函数,它接受.csv文件并将其处理为.arff文件。这个功能过去曾在当天工作,但目前它给出的错误是;

  

{:退出0,:out“”,:err“java.io.IOException:读取未知名义值selamfor属性:training-for(第102行)。尝试增加内存缓冲区的大小(-B选项) )或使用-L选项明确指定合法名义值> \ n \ tweka.core.converters.CSVLoader.makeInstance(CSVLoader.java:1013)\ n \ tweka.core.converters.CSVLoader.getNextInstance(CSVLoader.java: 839)\ n \ $ tweka.core.converters.ConverterUtils DataSource.hasMoreElements(ConverterUtils.java:375)\ n \ tweka.filters.Filter.filterFile(Filter.java:1104)\ n \ tweka.filters.Filter.runFilter (Filter.java:1372)\n\tweka.filters.supervised.attribute.AttributeSelection.main(AttributeSelection.java:614)\ nnnntt weka.core.converters.CSVLoader.makeInstance(CSVLoader.java:1013) \ n \ tat weka.core.converters.CSVLoader.getNextInstance(CSVLoader.java:839)\ n \ tat weka.core.converters.ConverterUtils $ DataSource.hasMoreElements(ConverterUtils.java:375)\ n \ tat weka.filters。 Filter.filterFile(Filter.java:1104)\ n \ tat weka.filters.Filter.runFilter(Fi lter.java:1372)\n\tat weka.filters.supervised.attribute.AttributeSelection.main(AttributeSelection.java:614)\ n“}

我该如何解决这个问题?提前致谢。我使用mac osx yosemite。

2 个答案:

答案 0 :(得分:0)

在这种情况下,您启动JVM,然后运行启动shell的clojure函数,该shell启动另一个不同的JVM副本,然后在其中运行一个类。

如果将weka jar添加到类路径中,然后通过直接调用它从clojure中运行适当的方法,您可能会发现集成更容易。

该错误消息中提到的java参数是指由第二个shell启动的java副本,因此,如果确实想要转到该路由,请在“java”之前添加这些参数“-cp”,虽然我认为如果你不运行嵌套的JVM并且直接从clojure 使用java interop和{来调用weka,那么你的生活会更加愉快 {3}}

答案 1 :(得分:0)

我认为最好,最简单的方法是将WEB中的csv文件转换为arff。
对于70个数据集,我花了不到5分钟的时间,以后就避免出现此类问题。