我正在 Google App Engine(使用 Eclipse)中构建一个应用程序,该应用程序在其中一个部分使用 WEKA [1]。这个应用程序需要加载 ARFF 基地,但这没关系。这些基础所在的目录位于项目的根目录中。以下线路负责装载基地:
1. DataSource source;
2. source = new DataSource("bases/iris.arff");
3. Instances trainInstances = source.getDataSet();
4. trainInstances.setClassIndex(trainInstances.numAttributes() - 1);
上面几行代码是在负责执行应用程序的 servlet 中调用的代码的一部分。Servlet 运行正常,但“源”变量无法读取 arff 文件,因此在第 3 行出现以下异常:
“java.io.IOException:未在 weka.core.converters.ArffLoader.getDataSet(ArffLoader.java:1003) 指定源”
根据[2],
可以从作为应用程序的一部分上传的文件中读取,前提是该文件位于以下位置: war/WEB-INF // 在与 appengine-web.xml 中的模式匹配的位置(默认情况下包括所有内容) )
我已经遵循了这两点,但没有成功。对于第二个,我的配置如下:
<resource-files>
<include path="/bases/**.arff" />
</resource-files>
鉴于这段悠久的历史,我问你:有没有将“bases”目录放在某个地方,或者在 GAE xml 文件或 Eclipse 上配置一些东西,从而可以加载 ARFF 基础?
参考
[1] www.cs.waikato.ac.nz/ml/weka/
[2] https://developers.google.com/appengine/kb/java#readfile