您的位置:首页 > 编程语言 > Java开发

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

2014-11-02 23:34 316 查看
书读的少,翻译的不好别打我

文章地址: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());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: