我正在尝试使用 Java 代码自动执行一些 Weka 分类。当我尝试读取 csv 文件时出现以下错误:
java.io.IOException: wrong number of values. Read 98, expected 97, read Token[EOL], line 3 at weka.core.converters.ConverterUtils.errms(ConverterUtils.java:912) at weka.core.converters.CSVLoader.getInstance(CSVLoader.java:747) at weka.core.converters.CSVLoader.getDataSet(CSVLoader.java:570) at Classifier_Search.readFile(Classifier_Search.java:18) at Classifier_Search.main(Classifier_Search.java:178) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:271)
当我尝试通过 Weka GUI 提供 csv 文件时,出现同样的错误。据我所知,该 csv 文件与我在 Weka 中成功使用的其他 csv 文件没有什么不同。有什么想法可能导致此错误吗?
为此,我无法在 OldNabble 上找到满意的答案 - 我尝试了我设法找到的一个建议,但没有成功。一个建议是将条目封装在双引号中 - 这没有改变任何内容。
为了清楚起见(并且因为我不知道如何上传内容),csv 文件如下所示:
C1V1、C2V1、C3V1,...等级,
4000.5、3890.6、2900.7、...N、
...
...
每行有 97 个条目。在另一个版本中,我在字符串和字符周围使用双引号(在第一行和最后一列),正如我之前所说,这没有帮助。
谢谢!
最佳答案
我在使用weka工具时也遇到了同样的问题。我能够像这样解决它。
当你得到这种类型的异常时。找到提示行上方的行。例如:在我的例子中,系统提示我异常是由于 80542 行中的某些故障造成的,因此我需要检查 80541 行。然后您可以看到该行中多了一个逗号或双引号。删除多余的逗号或双引号并保存文件。再次运行它。然后就可以正常运行了,没有任何异常。
关于在Java代码中使用Weka CSVLoader时出现Java IO异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10388848/