public void KFoldCrossValidation(DataObject[] data, int k) { ShuffleData(data); List <DataObject[]> splittedParts = SplitArrayInKParts(data, k); List <KeyValuePair <string, DataObject> > predictedObjects = new List <KeyValuePair <string, DataObject> >(); System.Diagnostics.Stopwatch a = new System.Diagnostics.Stopwatch(); for (int i = 0; i < splittedParts.Count; i++) { DataObject[] trainData = GetTrainDataForKFoldValidation(splittedParts, i); _Classifier.Train(trainData); a.Start(); KeyValuePair <string, DataObject>[] predicted = _Classifier.Classifie(splittedParts[i]); a.Stop(); predictedObjects.AddRange(predicted); } ConfusionMatrix cm = new ConfusionMatrix(); cm.Evaluate(predictedObjects.ToArray(), ""); cm.PrintMatrix(); cm.PrintMetrics(); Console.WriteLine("Elapsed time: " + a.Elapsed); }