Exemplo n.º 1
0
        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);
        }