2

我正在尝试使用 Java 代码自动化一些 Weka 分类。尝试读取 csv 文件时出现以下错误:

java.io.IOException:值的数量错误。在 weka.core.converters.CSVLoader.getInstance(CSVLoader.java:747) 的 weka.core.converters.CSVLoader.getInstance(CSVLoader.java:747) 读取 98,预期 97,读取 Token[EOL],第 3 行 weka.core.converters.ConverterUtils.errms(ConverterUtils.java:912) .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(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 个条目。在另一个版本中,我在字符串和字符(在第一行和最后一列)周围有双引号,正如我之前所说,这没有帮助。

谢谢!

4

2 回答 2

1

我在使用 weka 工具时也遇到了同样的问题。我能够像这样解决它。

在此处输入图像描述

当你得到这种类型的异常。找到提示行上方的行。例如:在我的情况下,我被提示异常是由于 80542 行中的一些故障,所以我需要检查 80541 行。然后您可以看到该行中有一个额外的逗号或额外的双引号。删除多余的逗号或双引号并保存文件。再次运行它。然后它可以正常工作,没有任何异常。

于 2014-11-30T09:06:30.490 回答
0

我发现了不同之处:如果 .csv 文件的行尾有逗号,则会导致 csvloader 抛出此错误。因此,如果您尝试使用它,请消除 .csv 文件中行尾的逗号。我不知道为什么只有第 3 行而不是第 1 行和第 2 行抛出错误(所有行都相同),但这修复了它。

于 2012-05-01T02:52:58.813 回答