交叉验证是机器学习算法中常用的一种评价算法的方法。Weka的Explorer提供了非常简单的用户UI,这让大部分人都能非常舒服的使用交叉验证。但是,如果你想自定义一些算法,或者想做一系列实验却又不想挨个挨个的手去点击的话,可能你需要用直接使用weka的jar来调用算法和交叉验证。
其实大部分的算法在weka的文档和其源码的设计上都是非常清晰的,只需简单几分钟就能让人迅速学会如何使用。不料,昨天我正想做100组需要交叉验证的实验,却发现这交叉验证的实现真的让人摸不着头脑。经过长时间研究,终于是能够正常使用了,这里简单总结一下,顺便让需要的人少走弯路。
首先必须明白一次实验后结果产生的流程:
Weka 使用一个接口 ResultProducer 来产生结果,结果会直接传送给一个指定的ResultListener。最终通过操纵ResultListener来获得实验结果。下面通过一个例子来详细分析
//该例中,我使用随机森林算法(randomforest)作为分类器。默认使用10倍交叉验证
//读入数据集
DataSource source = new DataSource("2006distanceClusters.csv");
Instances instances = source.getDataSet();
//注意:必须设置类标签。我的数据集中,类标签为最后一个属性
instances.setClassIndex(instances.numAttributes() - 1);
//初始化分类器,你可以使用其他分类器
RandomForest randomForest = n