public override string ToString() { return(_algorithm.ToString()); }
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); } }