【发布时间】:2012-04-30 18:43:09
【问题描述】:
我正在尝试使用 Java 代码自动化一些 Weka 分类。尝试读取 csv 文件时出现以下错误:
java.io.IOException:值的数量错误。阅读98,预期97, 阅读 Token[EOL],第 3 行 weka.core.converters.ConverterUtils.errms(ConverterUtils.java:912) 在 weka.core.converters.CSVLoader.getInstance(CSVLoader.java:747) 在 weka.core.converters.CSVLoader.getDataSet(CSVLoader.java:570) 在 Classifier_Search.readFile(Classifier_Search.java:18) 在 Classifier_Search.main(Classifier_Search.java:178) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)在 java.lang.reflect.Method.invoke(未知来源)在 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 个条目。在另一个版本中,我在字符串和字符(在第一行和最后一列)周围加上了双引号,正如我之前所说,这没有帮助。
谢谢!
【问题讨论】:
-
csv 中的第 3 行导致问题。行中有多余的逗号吗?
-
不,没有。我检查了文件,所有行看起来都一样。不过谢谢!
-
去掉第3行还能用吗?
-
在我看来,CSV 文件中的标头只有 97 个类。当它遇到第一行值时,它会找到其中的 98 个,并抛出异常。重新检查 CSV 标头中的类数。
-
我这样做了,但仍然出现错误,删除单引号 (') 为我解决了这个问题。