【发布时间】:2016-03-25 20:35:38
【问题描述】:
如何在 Weka 中加载没有标题的 CSV 文件?
有一些相关的问题,但似乎没有一个问题。
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。
【问题讨论】: