I am trying to automate some Weka classification using Java code. I'm getting the following error when I try to read my csv file:
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)
I get the same error when I try to feed the csv file in through the Weka GUI. As far as I know, the csv file is no different from other csv files that I've successfully used with Weka. Any thoughts about what could be causing this error?
I haven't been able to find a satisfactory answer on OldNabble for this - I've tried the one suggestion that I managed to find and it did not work. The one suggestion was to encapsulate the entries in double quotes - that did not change anything.
Just for clarity (and because I don't know how to upload things), the csv files look like this:
C1V1, C2V1, C3V1, ... Class,
4000.5, 3890.6, 2900.7, ... N,
...
...
There are 97 entries per row. In another version, I have double quotes around the strings and chars (in the first row and last column) and, as I previously stated, that doesn't help.
Thanks!
I've discovered the difference: if there is a comma at the end of a line in a .csv file, it causes csvloader to throw this error. So, if you're trying to use this, eliminate the commas at the ends of lines in your .csv file. I don't know why only line 3 and not lines 1 and 2 threw the error (all lines were identical), but this fixed it.