private void KNN_Button_Click(object sender, RoutedEventArgs e) { imgrid.Source = null; KNN knn = new KNN(); List <GistData> trainSamples = new List <GistData>(); List <GistData> testSamples = new List <GistData>(); List <GistData> trainClasses = new List <GistData>(); int fakeSimilar = 0; foreach (var item in globalgistdatalist) { if (fakeSimilar % 3 == 2) { item.IsSimilar = 0; //no comment, will go to testSamples } else if (fakeSimilar % 3 == 1) { item.IsSimilar = 1; //like, Will go to trainSamples } else if (fakeSimilar % 3 == 0) { item.IsSimilar = -1; //dislike, Will go to trainSamples } Console.WriteLine("Before KNN: " + item.filename + " " + item.IsSimilar); fakeSimilar++; if (item.IsSimilar == 0) { testSamples.Add(item); } else { trainSamples.Add(item); } } trainClasses = knn.TestKnnCase(trainSamples, testSamples, 3, 0.5); globalgistdatalist.Clear(); globalgistdatalist.AddRange(trainClasses); globalgistdatalist.AddRange(trainSamples); Console.WriteLine(globalgistdatalist.Count()); //sp1.Children.Clear(); lv1.Items.Clear(); globalgistdatalist = globalgistdatalist.OrderByDescending(o => o.IsSimilar).ThenBy(o => o.distance).ToList(); //Now load the files in the stack panel for (int j = 0; j < globalgistdatalist.Count; j++) { if (j > 0) { if (globalgistdatalist[j].filename == globalgistdatalist[j - 1].filename && globalgistdatalist[j].distance == globalgistdatalist[j - 1].distance) { continue; } } Image img = new Image(); BitmapImage source = new BitmapImage(); source.BeginInit(); source.UriSource = new Uri(globalgistdatalist[j].filename, UriKind.Relative); source.CacheOption = BitmapCacheOption.OnLoad; source.DecodePixelWidth = 200; source.DecodePixelHeight = 200; source.EndInit(); img.Source = source; img.Stretch = Stretch.Uniform; int qq = source.PixelHeight; // Image loads here System.Windows.Controls.ToolTip tooltip = new System.Windows.Controls.ToolTip(); tooltip.Content = globalgistdatalist[j].metadata; img.ToolTip = tooltip; //sp1.Children.Add(img); System.Windows.Controls.RadioButton radio1like = new System.Windows.Controls.RadioButton(); System.Windows.Controls.RadioButton radio2dislike = new System.Windows.Controls.RadioButton(); radio1like.VerticalAlignment = VerticalAlignment.Bottom; radio1like.Content = "Yes"; radio2dislike.VerticalAlignment = VerticalAlignment.Bottom; radio2dislike.HorizontalAlignment = System.Windows.HorizontalAlignment.Right; radio2dislike.Content = "No"; var grid = new Grid(); grid.Children.Add(img); grid.Children.Add(radio1like); grid.Children.Add(radio2dislike); lv1.Items.Add(grid); //if (checkbox.IsChecked == true) //{ // globalgistdatalist[j].IsSimilar = 1; // imgrid.Source = source; //} //else // globalgistdatalist[j].IsSimilar = -1; if (radio1like.IsChecked == true) { globalgistdatalist[j].IsSimilar = 1; } else if (radio2dislike.IsChecked == true) { globalgistdatalist[j].IsSimilar = -1; } Console.WriteLine("After KNN: " + globalgistdatalist[j].filename + " " + globalgistdatalist[j].IsSimilar + " distance :" + globalgistdatalist[j].distance); } lv1.Items.Refresh(); }