Beispiel #1
0
        public void CrossValidation(int howManyValidationFolds)
        {
            var dataCount = youtubeChannel.Count;
            var range     = dataCount / howManyValidationFolds;
            var values    = youtubeChannel.Values.ToList();

            Console.WriteLine("Full Data: " + dataCount + " inputs. For testing we take 1/" + howManyValidationFolds + " of data. That is: " + range + "\n");
            int           start        = 0;
            Bayes         bayes        = new Bayes();
            List <string> knnResults   = new List <string>();
            List <string> bayesResults = new List <string>();

            for (int i = 0; i < howManyValidationFolds; i++)
            {
                var testData  = values.GetRange(start, range).ToDictionary(x => x.channelName);                                                               //paimamas range kiekis duomeų -  testavimui
                var trainData = values.GetRange(0, start).Concat(values.GetRange(start + range, dataCount - start - range)).ToDictionary(x => x.channelName); //paimami likusieji duomenys mokymuisi
                start += range;

                var fullData    = DivideData(youtubeChannel, howManyValidationFolds);
                var dividedData = DivideData(trainData, howManyValidationFolds);
                //čia kviečiam algoritmo magijas
                KNN knn = new KNN(fullData, dividedData, howManyValidationFolds);
                bayes.Train(dividedData);
                bayesResults.Add(bayes.Test(fullData, testData));
                knnResults.Add(knn.Test(testData));
            }
            Console.WriteLine(new string('-', 40));
            foreach (var item in knnResults)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine(new string('-', 40));
            foreach (var item in bayesResults)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine(new string('-', 40));
        }