在Java中使用weka:手动生成并输出对分类器的评估

书读的少,翻译的不好别打我

文章地址:http://weka.wikispaces.com/Generating+classifier+evaluation+output+manually

在命令行执行分类时,下面的这些代码片段可以解释怎么生成weka输出生成器。可以在 Evaluation类中参考 weka.classifiers.Evaluation。这篇文章仅仅作为综述,需要了解细节的参考 Evaluation类的文档。


模型


如果一个分类器支持输出模型,那么可以在训练之后使用toString()方法。

Instances data = ... // from somewhere
 Classifier cls = new weka.classifiers.trees.J48();
 cls.buildClassifier(data);
 System.out.println(cls);

注意:weka总是基于完全训练集(提供 -t 属性)输出模型,不管交叉验证是否被使用,或者是一个指定的测试集(via-T),十字交叉验证产生的10个模型从来没被输出过。如果你想输出这些模型,你必须自己模拟十字交叉验证(参考   Generating cross-validation folds (Java approach) 和   Displaying results of cross-validation folds)。


统计

统计也可以叫做评估的总结。可以通过toSummaryString()方法产生。下面是一个J48交叉验证产生总结的例子。

Classifier cls = new J48();
 Evaluation eval = new Evaluation(data);
 Random rand = new Random(1);  // using seed = 1
 int folds = 10;
 eval.crossValidateModel(cls, data, folds, rand);
 System.out.println(eval.toSummaryString());



详细类统计

你可以使用toClassDetailsString()方法,来对每个类产生详细的统计(通过 -i 命令行)。下面再次使用J48交叉验证的列子。

Classifier cls = new J48();
 Evaluation eval = new Evaluation(data);
 Random rand = new Random(1);  // using seed = 1
 int folds = 10;
 eval.crossValidateModel(cls, data, folds, rand);
 System.out.println(eval.toClassDetailsString());



混淆矩阵

混淆矩阵是使用 Evaluation 类的简单的toMatrixString() 或者 toMatrixString(String)方法来进行输出。下面使用基于数据集的J48交叉验证,来输出标准混淆矩阵。

 Classifier cls = new J48();
 Evaluation eval = new Evaluation(data);
 Random rand = new Random(1);  // using seed = 1
 int folds = 10;
 eval.crossValidateModel(cls, data, folds, rand);
 System.out.println(eval.toMatrixString());




你可能感兴趣的:(手动生成对分类器的评估)