Clone() public méthode

create a shallow copy of the object
public Clone ( ) : Object
Résultat Object
Exemple #1
0
        /// <summary>Evaluate on the folds of a dataset split</summary>
        /// <param name="recommender">a rating predictor</param>
        /// <param name="split">a rating dataset split</param>
        /// <param name="show_results">set to true to print results to STDERR</param>
        /// <returns>a dictionary containing the average results over the different folds of the split</returns>
        public static Dictionary<string, double> EvaluateOnSplit(RatingPredictor recommender, ISplit<IRatings> split, bool show_results)
        {
            var avg_results = new Dictionary<string, double>();
            foreach (var key in Measures)
                avg_results[key] = 0;

            for (int i = 0; i < split.NumberOfFolds; i++)
            {
                var split_recommender = (RatingPredictor) recommender.Clone(); // to avoid changes in recommender
                split_recommender.Ratings = split.Train[i];
                split_recommender.Train();
                var fold_results = Evaluate(split_recommender, split.Test[i]);

                foreach (var key in fold_results.Keys)
                    avg_results[key] += fold_results[key];
                if (show_results)
                    Console.Error.WriteLine("fold {0}, RMSE {1,0:0.#####}, MAE {2,0:0.#####}", i, fold_results["RMSE"].ToString(CultureInfo.InvariantCulture), fold_results["MAE"].ToString(CultureInfo.InvariantCulture));
            }

            foreach (var key in avg_results.Keys.ToList())
                avg_results[key] /= split.NumberOfFolds;

            return avg_results;
        }