private void predictButton_Click(object sender, RoutedEventArgs e)
        {
            var inputs = new int[questionList.Count];

            for (int i = 0; i < questionList.Count; i++)
            {
                inputs[i] = 3;

                if (questionList[i].A0)
                {
                    inputs[i] = 0;
                }
                if (questionList[i].A1)
                {
                    inputs[i] = 1;
                }
                if (questionList[i].A2)
                {
                    inputs[i] = 2;
                }
                if (questionList[i].A3)
                {
                    inputs[i] = 3;
                }
                if (questionList[i].A4)
                {
                    inputs[i] = 4;
                }
            }


            var dnode = xtree.Items.GetItemAt(0) as DecisionTree.DNode;
            var dtree = new DecisionTree();

            dtree.rootNode = dnode;
            var pred = dtree.Predict(inputs);


            predictResultLabel.Foreground = Brushes.White;
            if (pred == 0)
            {
                predictResultLabel.Content = "Class:{0}, Label:Yes";

                predictResultLabel.Background = Brushes.Red;
            }
            else
            {
                predictResultLabel.Content = "Class:{1}, Label:No";

                predictResultLabel.Background = Brushes.Green;
            }
        }
        public List <DecisionTree> KFoldTest(int[][] X, int[] y, int K = 10, bool alert = false)
        {
            int KSampleSize = (int)Math.Ceiling(y.Length / (float)K);


            List <DecisionTree> testTrees = new List <DecisionTree>();

            int correctPredicts   = 0;
            int incorrectPredicts = 0;

            for (int i = 0; i < K; i++)
            {
                var X_validation = X.Skip(i * KSampleSize).Take(KSampleSize).ToArray();
                var y_validation = y.Skip(i * KSampleSize).Take(KSampleSize).ToArray();


                var x_remain = X.Skip((i + 1) * KSampleSize);
                var X_train  = X.Take(i * KSampleSize).Concat(x_remain).ToArray();

                var y_remain = y.Skip((i + 1) * KSampleSize);
                var y_train  = y.Take(i * KSampleSize).Concat(y_remain).ToArray();


                var testTree = new DecisionTree();
                testTree.Train(X_train, y_train);
                testTrees.Add(testTree);



                for (int j = 0; j < y_validation.Length; j++)
                {
                    if (testTree.Predict(X_validation[j]) == y_validation[j])
                    {
                        correctPredicts++;
                    }
                    else
                    {
                        incorrectPredicts++;
                    }
                }
            }
            var str = string.Format("Correct Predicts:{0} , IncorrectPredicts:{1} , avg acc:{2}, K-Num:{3}", correctPredicts, incorrectPredicts, correctPredicts / (float)(correctPredicts + incorrectPredicts), K);

            Console.WriteLine(str);
            if (alert)
            {
                MessageBox.Show(str, "Result");
            }
            return(testTrees);
        }