public override string ToString()
 {
     return(_algorithm.ToString());
 }
예제 #2
0
        static bool ComputeErrorRate(IEvaluator evaluator, IRecommendation recommendation)
        {
            var watch = new Stopwatch();

            try
            {
                var reader = new DataReader();

                var subjects = Enumerable.Empty <Movie>();
                var raters   = Enumerable.Empty <User>();
                var ratings  = Enumerable.Empty <Rating>();

                reader.ReadDataFromFiles(_moviesPath, _testRatingPath, out subjects, out raters, out ratings);

                Console.WriteLine("Started: " + recommendation.ToString());

                watch.Start();

                var error = evaluator.CalculateError(recommendation, ratings, raters, subjects);

                watch.Stop();

                var algName = recommendation.ToString();

                var errorName = evaluator.MethodName;

                var text = string.Format("Algorithm: {0}\t{1}: {2}\tElapsed: {3}", algName, errorName, error,
                                         watch.Elapsed);

                Console.WriteLine(text);

                using (var stream = File.AppendText("scores.txt"))
                    stream.WriteLine(text);

                return(true);
            }
            catch (Exception ex)
            {
                if (watch.IsRunning)
                {
                    watch.Stop();
                }

                var err = string.Format("{0} \n\n {1} \n\n {2}", watch.Elapsed, ex.Message, ex.StackTrace);

                using (var stream = File.AppendText("error.txt"))
                    stream.WriteLine(err);

                var innerEx = ex.InnerException;

                while (innerEx != null)
                {
                    err = string.Format("inner: \n\n {0} \n\n {1}", innerEx.Message, innerEx.StackTrace);

                    using (var stream = File.AppendText("error.txt"))
                        stream.WriteLine(err);

                    innerEx = innerEx.InnerException;
                }

                return(false);
            }
        }