【发布时间】:2016-06-27 11:06:45
【问题描述】:
我试图在以下代码中使用交叉验证: 计划:
TextDirectoryToArff d = new TextDirectoryToArff();
try {
Instances dataset = d.createDataset("C:\\mytest");
dataset.setClassIndex(dataset.numAttributes() - 1 );
double precision = 0, recall=0,fmeasure=0,error=0;
int size1 = dataset1.numInstances() / 10;
int begin = 0;
int end = size1 - 1 ;
for (int i=1 ; i<=10;i++)
{
System.out.println("iteration :" + 1);
Instances training = new Instances(dataset);
Instances testing = new Instances(dataset, begin , (end - begin));
for (int j=0;j < (end - begin); j++)
training.delete(begin);
Classifier tree = new NaiveBayes();
Instances filteredInstaces = training;
StringToNominal nominal ;
for(int a=0;a<training.numAttributes()-1;a++)
{
if(training.attribute(a).isString())
{
nominal = new StringToNominal();
nominal.setInputFormat(filteredInstaces);
training = Filter.useFilter(training, nominal);
}
}
tree.buildClassifier(training);
Evaluation eval = new Evaluation(testing);
eval.evaluateModel(tree, testing);
System.out.println("Precision:" + eval.precision(1));
System.out.println("Recall:" + eval.recall(1));
System.out.println("Fmeasure:" + eval.fMeasure(1));
System.out.println("Error:" + eval.errorRate());
我有一些用于交叉验证的代码,但无法与上述代码集成。请建议我如何将以下代码集成到上述代码中以找到交叉验证?
代码:
Evaluation eval = new Evaluation(dataset);
eval.evaluateModel(cls, dataset2);
eval.crossValidateModel(cls,dataset1,10, dataset2.getRandomNumberGenerator(1));
System.out.println(eval.toSummaryString("\nResults\n======\n", false));
【问题讨论】:
-
你可以在stackoverflow.com/questions/10437677/cross-validation-in-weka找到更多关于交叉验证概念的信息
标签: classification weka evaluation cross-validation