I was trying to use cross validation in following code: Program:
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());
I've some code for cross validation but not able to integrate with above code. Please suggest how can I integrate following code in above code to find cross validation?
Code:
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));