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)); }