/// <summary>
        /// Predicts binary operation according to given dataset
        /// </summary>
        /// <param name="dataFilePath">Path for data file</param>
        private static void PredictBinaryOperation(string dataFilePath)
        {
            BinaryPredictor predictor = new BinaryPredictor(dataFilePath);

            predictor.Train();

            BinaryData data = new BinaryData();

            //0, 0
            data.FirstBit = 0; data.SecondBit = 0;
            BinaryPrediction predictionResult = predictor.Predict(data);

            Console.WriteLine("0, 0 Prediction: " + predictionResult.Prediction);

            //0, 1
            data.FirstBit    = 0; data.SecondBit = 1;
            predictionResult = predictor.Predict(data);
            Console.WriteLine("0, 1 Prediction: " + predictionResult.Prediction);

            //1, 0
            data.FirstBit    = 1; data.SecondBit = 0;
            predictionResult = predictor.Predict(data);
            Console.WriteLine("1, 0 Prediction: " + predictionResult.Prediction);

            //1, 1
            data.FirstBit    = 1; data.SecondBit = 1;
            predictionResult = predictor.Predict(data);
            Console.WriteLine("1, 1 Prediction: " + predictionResult.Prediction);

            Console.ReadKey();
        }
        /// <summary>
        /// Predicts binary operation according to given data
        /// </summary>
        /// <param name="data">Data for prediction</param>
        /// <returns>Predicted data</returns>
        public BinaryPrediction Predict(BinaryData data)
        {
            BinaryPrediction result = null;

            if (null != data)
            {
                if (null != _predictionEngine)
                {
                    result = _predictionEngine.Predict(data);
                }
            }

            return(result);
        }