无法上传用于WEKA分析的CSV文件 - java

pre*_*ret 1 java csv machine-learning data-mining weka

我正在研究一个大数据分析项目,我现在陷入困境,我正在尝试上传包含数据的CSV文件,并希望使用WEKA java API来执行分析.我希望标记文本,删除停止词,识别pos和过滤名词我不知道为什么我看到这个错误.解释和解决方案将是伟大的!但我看到以下错误

Error: 

   Exception in thread "main" java.io.IOException: wrong number of values. Read 21, expected 20, read Token[EOL], line 3
     at weka.core.converters.ConverterUtils.errms(ConverterUtils.java:912)
     at weka.core.converters.CSVLoader.getInstance(CSVLoader.java:819)
     at weka.core.converters.CSVLoader.getDataSet(CSVLoader.java:642)
Run Code Online (Sandbox Code Playgroud)

代码:

CSVLoader loader = new CSVLoader();
loader.setSource(new File("C:\\fakepath\\CSVfilesample.csv"));
Instances data = loader.getDataSet();

// save ARFF
ArffSaver saver = new ArffSaver();
saver.setInstances(data);
saver.setFile(new File("C:\\fakepath\\CSVfilesample.arff"));
saver.setDestination(new File("C:\\fakepath\\CSVfilesample.arff"));
saver.writeBatch();

BufferedReader br=null;
br=new BufferedReader(new FileReader("C:\\fakepath\\CSVfilesample.arff"));
Instances train=new Instances(br);
train.setClassIndex(train.numAttributes()-1);
br.close();
NaiveBayes nb=new NaiveBayes();
nb.buildClassifier(train);
Evaluation eval=new Evaluation(train);
eval.crossValidateModel(nb, train, 10, new Random(1));
System.out.println(eval.toSummaryString("\nResults\n=====\n",true));
System.out.println(eval.fMeasure(1)+" "+eval.precision(1)+" "+eval.recall(1));
Run Code Online (Sandbox Code Playgroud)

use*_*071 7

此错误通常是由加载某个ARFF文件时格式不正确引起的.有几个原因.检查以下几点:

  • 实际使用ARFF格式而不是CSV,因为它比CSV文件具有某些优势.检查我可以使用CSV吗?
  • 现在,对于另一部分,检查文件的编码是否为UTF-8.如果是,则必须使用UTF 8格式解码文件.参考文献:使用WEKA进行文本分类
  • 第三,检查CSV中是否存在某些不兼容的字符.喜欢%2或类似的东西.检查语法错误的结尾.检查是否有任何额外的逗号.

此错误告诉您文件内容有问题.它们不遵循WEKA标准格式.解决这个问题,错误就会消失.

希望能帮助到你.:)