(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,:去“”,:ERR“java.io.IOException的:读selamfor未知标称值属性:训练换(行:102)。尝试增加存储器缓冲区的大小(-B选项)或明确指定法律标称值>使用-L选项。\ n \ tweka.core.converters.CSVLoader.makeInstance(CSVLoader.java:1013)\ n \ tweka.core.converters.CSVLoader.getNextInstance(CSVLoader.java:839)\ ñ\ tweka.core.converters.ConverterUtils $ DataSource.hasMoreElements(ConverterUtils.java:375)\ n \ tweka.filters.Filter.filterFile(Filter.java:1104)\ n \ tweka.filters.Filter.runFilter(过滤。的java:1372)\ n \ tweka.filters.supervised.attribute.AttributeSelection.main(AttributeSelection.java:614)\ n \ n \ TAT weka.core.converters.CSVLoader.makeInstance(CSVLoader.java:1013)\ n \ TAT weka.core.converters.CSVLoader.getNextInstance(CSVLoader.java:839)\ n \达weka.core.converters.ConverterUtils $ DataSource.hasMoreElements(ConverterUtils.java:375)\ n \达weka.filters.Filter.filterFile (Filter.java:1104)\n\tat weka.filters.Filter.runFilter(Filter.j AVA:1372)\ n \ TAT weka.filters.supervised.attribute.AttributeSelection.main(AttributeSelection.java:614)\ n“个}
我怎样才能解决这个问题?提前致谢。我使用的是Mac OSX的优胜美地。
在这种情况下,你开始了JVM,然后运行启动一个壳Clojure的功能,并且外壳启动JVM的另一种不同的副本,然后在运行的类。
如果添加的秧鸡罐子到类路径中,然后就从Clojure的范围内通过直接调用它运行适当的方法您可能会发现整合更容易。
在该错误消息中提到的java的参数是指由第二壳正在启动的Java的副本,因此如果你真的想要去的路线,添加这些参数adter的“Java”和之前的“-cp”,但我认为你的生活会更愉快,如果你不直接从Clojure中使用Java的互操作和运行these instructions嵌套的JVM并调用秧鸡
我认为最好的和最简单的方法是将CSV文件从内WEKA转换成ARFF。 对于70集,我花了<5分钟,你在将来避免有这样的问题。