如何在Weka中加载没有标题的CSV文件?
有一些相关的问题,但似乎没有一个能够切入要点。
MWE
这是test.csv文件:
运行时,它只报告 4 个实例,而不是 5 。如果我添加标题,则可以正常工作。
我也尝试了直接使用API
参考资料: 编辑:事实证明这是3.6.13的问题。该代码在3.7.10中运行良好。
有一些相关的问题,但似乎没有一个能够切入要点。
MWE
这是test.csv文件:
20,1,"+"
30,2,"+"
30,1,"+"
15,1,"-"
10,0,"-"
这里是Test.java
代码:
// javac -Xlint -cp weka.jar Test.java && java -cp .:weka.jar Test
import weka.core.converters.CSVLoader;
import weka.core.Instances;
import weka.classifiers.Classifier;
import weka.classifiers.bayes.NaiveBayes;
import weka.classifiers.Evaluation;
import java.io.File;
class Test
{
public static void main(String[] args) {
try {
CSVLoader loader = new CSVLoader();
loader.setOptions(new String[] {"-H"});
loader.setSource(new File("test.csv"));
Instances tr = loader.getDataSet();
tr.setClassIndex(tr.numAttributes() - 1);
Classifier m = (Classifier) new NaiveBayes();
m.buildClassifier(tr);
Evaluation eval = new Evaluation(tr);
eval.evaluateModel(m, tr);
System.out.println(eval.toSummaryString());
}
catch(Exception ex) {
System.out.println(ex);
}
}
}
运行时,它只报告 4 个实例,而不是 5 。如果我添加标题,则可以正常工作。
Correctly Classified Instances 4 100 %
Incorrectly Classified Instances 0 0 %
Kappa statistic 1
Mean absolute error 0.0065
Root mean squared error 0.0112
Relative absolute error 1.3088 %
Root relative squared error 2.2477 %
Total Number of Instances 4
请注意我使用了:
loader.setOptions(new String[] {"-H"});
我也尝试了直接使用API
loader.setNoHeaderRowPresent(true);
,但在Weka 3.6.13中似乎不可用。参考资料: 编辑:事实证明这是3.6.13的问题。该代码在3.7.10中运行良好。
Test.java:16: error: cannot find symbol loader.setNoHeaderRowPresent(true);
。但奇怪的是,loader.setOptions(new String[] {"-H"});
对我也不起作用。我会发布一个解决方法作为替代答案... - Ricardo Magalhães CruzsetNoHeaderRowPresent()
还是setOption()
。看起来是稳定版本3.6.13的一个bug。http://www.cs.waikato.ac.nz/ml/weka/downloading.html - Ricardo Magalhães Cruz3.8.4
,尝试使用Explorer
GUI 应用程序打开无标题的CSV
文件。即使将setNoHeaderRowPresent
指定为true
,也无法工作或显示“无效流头”错误。 - Rafs