Ejemplo n.º 1
0
        public static List<Movie> GetRecommendations(List<Movie> all, Dictionary<int, int> newRanks, List<Tuple<int, int, float>> oldRanks)
        {
            int newUserId = 0;
            Ratings ratings = new Ratings();

            foreach (var r in oldRanks)
            {
                ratings.Add(r.Item1, r.Item2, r.Item3);
                if (r.Item1 > newUserId) newUserId = r.Item1;
            }

            // this makes us sure that the new user has a unique id (bigger than all other)
            newUserId = newUserId + 1;

            foreach (var k in newRanks)
            {
                ratings.Add(newUserId, k.Key, (float)k.Value);
            }

            var engine = new BiPolarSlopeOne();

            // different algorithm:
            // var engine = new UserItemBaseline();

            engine.Ratings = ratings;

            engine.Train(); // warning: this could take some time!

            return all.Select(m =>
                                {
                                    m.Rank = engine.Predict(newUserId, m.Id); // do the prediction!
                                    return m;
                                }).ToList();
        }
Ejemplo n.º 2
0
		IRatings CreateRatings2()
		{
			var ratings = new Ratings();
			ratings.Add(1, 5, 0.9f);
			ratings.Add(7, 9, 0.5f);
			ratings.InitScale();

			return ratings;
		}
Ejemplo n.º 3
0
        IRatings CreateRatings2()
        {
            var ratings = new Ratings();

            ratings.Add(1, 5, 0.9);
            ratings.Add(7, 9, 0.5);

            return(ratings);
        }
Ejemplo n.º 4
0
        IRatings CreateRatings2()
        {
            var ratings = new Ratings();

            ratings.Add(1, 5, 0.9f);
            ratings.Add(7, 9, 0.5f);
            ratings.InitScale();

            return(ratings);
        }
Ejemplo n.º 5
0
        public void TestNewUserInTestSet()
        {
            var recommender = new BiPolarSlopeOne();

            var training_data = new Ratings();
            training_data.Add(0, 0, 1.0f);
            training_data.Add(1, 1, 5.0f);

            recommender.Ratings = training_data;
            recommender.Train();

            Assert.AreEqual( 3.0, recommender.Predict(2, 1) );
        }
Ejemplo n.º 6
0
        public void TestComputeCorrelation()
        {
            // create test objects
            var ratings = new Ratings();
            ratings.Add(0, 1, 0.3);
            ratings.Add(0, 4, 0.2);
            ratings.Add(1, 2, 0.6);
            ratings.Add(1, 3, 0.4);
            ratings.Add(1, 4, 0.2);

            // test
            Assert.AreEqual(0, Pearson.ComputeCorrelation(ratings, EntityType.USER, 0, 1, 0));
        }
Ejemplo n.º 7
0
        [Test()] public void TestComputeCorrelation()
        {
            // create test objects
            var ratings = new Ratings();

            ratings.Add(0, 1, 0.3);
            ratings.Add(0, 4, 0.2);
            ratings.Add(1, 2, 0.6);
            ratings.Add(1, 3, 0.4);
            ratings.Add(1, 4, 0.2);

            // test
            Assert.AreEqual(0, Pearson.ComputeCorrelation(ratings, EntityType.USER, 0, 1, 0));
        }
Ejemplo n.º 8
0
		[Test()] public void TestComputeCorrelation()
		{
			// create test objects
			var ratings = new Ratings();
			ratings.Add(0, 1, 0.3f);
			ratings.Add(0, 4, 0.2f);
			ratings.Add(1, 2, 0.6f);
			ratings.Add(1, 3, 0.4f);
			ratings.Add(1, 4, 0.2f);

			// test
			var p = new Pearson(ratings.AllUsers.Count, 0f);
			Assert.AreEqual(0, p.ComputeCorrelation(ratings, EntityType.USER, 0, 1));
		}
Ejemplo n.º 9
0
        public void TestNewItemInTestSet()
        {
            var recommender = new SlopeOne();

            var training_data = new Ratings();
            training_data.Add(0, 0, 1.0f);
            training_data.Add(1, 1, 5.0f);
            training_data.InitScale();

            recommender.Ratings = training_data;
            recommender.Train();

            Assert.AreEqual( 3.0f, recommender.Predict(0, 2) );
        }
Ejemplo n.º 10
0
        public void TestNewItemInTestSet()
        {
            var recommender = new BiPolarSlopeOne();
            recommender.MinRating = 1;
            recommender.MaxRating = 5;

            var training_data = new Ratings();
            training_data.Add(0, 0, 1.0);
            training_data.Add(1, 1, 5.0);

            recommender.Ratings = training_data;
            recommender.Train();

            Assert.AreEqual( 3.0, recommender.Predict(0, 2) );
        }
        public void TestNewUserInTestSet()
        {
            var recommender = new SlopeOne();

            var training_data = new Ratings();

            training_data.Add(0, 0, 1.0f);
            training_data.Add(1, 1, 5.0f);
            training_data.InitScale();

            recommender.Ratings = training_data;
            recommender.Train();

            Assert.AreEqual(3.0, recommender.Predict(2, 1));
        }
Ejemplo n.º 12
0
        Read(TextReader reader, IEntityMapping user_mapping, IEntityMapping item_mapping)
        {
            var ratings = new Ratings();

            var    split_chars = new char[] { '\t', ' ', ',' };
            string line;

            while ((line = reader.ReadLine()) != null)
            {
                if (line.Length == 0)
                {
                    continue;
                }

                string[] tokens = line.Split(split_chars);

                if (tokens.Length < 3)
                {
                    throw new IOException("Expected at least three columns: " + line);
                }

                int    user_id = user_mapping.ToInternalID(int.Parse(tokens[0]));
                int    item_id = item_mapping.ToInternalID(int.Parse(tokens[1]));
                double rating  = double.Parse(tokens[2], CultureInfo.InvariantCulture);

                ratings.Add(user_id, item_id, rating);
            }
            return(ratings);
        }
Ejemplo n.º 13
0
        public NibbleGameRating RateGame(
            Game g)
        {
            var adjustment = new NibbleGameRating();

            if (!Ratings.ContainsKey(g.HomeTeam))
            {
                Ratings.Add(g.HomeTeam, new NibbleRating());
            }
            if (!Ratings.ContainsKey(g.AwayTeam))
            {
                Ratings.Add(g.AwayTeam, new NibbleRating());
            }

            var projHome = Ratings[g.HomeTeam].Offence
                           + Ratings[g.AwayTeam].Defence;

            projHome  = (projHome / 2) + (int)AverageScore;
            projHome += HomeFieldAdvantage;
            var projAway = Ratings[g.AwayTeam].Offence
                           + Ratings[g.HomeTeam].Defence;

            projAway = (projAway / 2) + (int)AverageScore;

            adjustment.HomeRating.Offence = (int)
                                            (g.HomeScore - projHome) / FudgeFactor(g);
            adjustment.HomeRating.Defence = (int)
                                            (g.AwayScore - projAway) / FudgeFactor(g);
            adjustment.AwayRating.Offence = (int)
                                            (g.AwayScore - projAway) / FudgeFactor(g);
            adjustment.AwayRating.Defence = (int)
                                            (g.HomeScore - projHome) / FudgeFactor(g);
            return(adjustment);
        }
Ejemplo n.º 14
0
        /// <summary>Read in rating data from a TextReader</summary>
        /// <param name="reader">the <see cref="TextReader"/> to read from</param>
        /// <param name="user_mapping">mapping object for user IDs</param>
        /// <param name="item_mapping">mapping object for item IDs</param>
        /// <returns>the rating data</returns>
        public static IRatings Read(TextReader reader,	IEntityMapping user_mapping, IEntityMapping item_mapping)
        {
            var ratings = new Ratings();

            var split_chars = new char[]{ '\t', ' ', ',' };
            string line;

            while ( (line = reader.ReadLine()) != null )
            {
                if (line.Length == 0)
                    continue;

                string[] tokens = line.Split(split_chars);

                if (tokens.Length < 3)
                    throw new IOException("Expected at least three columns: " + line);

                int user_id = user_mapping.ToInternalID(int.Parse(tokens[0]));
                int item_id = item_mapping.ToInternalID(int.Parse(tokens[1]));
                double rating = double.Parse(tokens[2], CultureInfo.InvariantCulture);

                ratings.Add(user_id, item_id, rating);
            }
            return ratings;
        }
Ejemplo n.º 15
0
        public static IRatings CreateRatings()
        {
            var ratings = new Ratings();

            ratings.Add(0, 0, 0.0f);
            return(ratings);
        }
Ejemplo n.º 16
0
			Read(TextReader reader, IMapping user_mapping = null, IMapping item_mapping = null, bool ignore_first_line = false)
		{
			if (user_mapping == null)
				user_mapping = new IdentityMapping();
			if (item_mapping == null)
				item_mapping = new IdentityMapping();
			if (ignore_first_line)
				reader.ReadLine();

			var ratings = new Ratings();

			string line;
			while ( (line = reader.ReadLine()) != null )
			{
				if (line.Length == 0)
					continue;

				string[] tokens = line.Split(Constants.SPLIT_CHARS);

				if (tokens.Length < 3)
					throw new FormatException("Expected at least 3 columns: " + line);

				int user_id = user_mapping.ToInternalID(tokens[0]);
				int item_id = item_mapping.ToInternalID(tokens[1]);
				float rating = float.Parse(tokens[2], CultureInfo.InvariantCulture);

				ratings.Add(user_id, item_id, rating);
			}
			ratings.InitScale();
			return ratings;
		}
Ejemplo n.º 17
0
        private void LoadRatings()
        {
            var ratingCounter = 0;
            var ratingValues  = 0;

            Ratings.Clear();
            var allRatings = _ratingRepository.GetAllByMovieId(DisplayDetailModel.Id);

            foreach (var rating in allRatings)
            {
                if (rating != null)
                {
                    Ratings.Add(rating);
                    ratingValues += rating.NumericEvaluation;
                    ratingCounter++;
                }
            }

            if (ratingCounter != 0)
            {
                AverageRating     = (double)ratingValues / ratingCounter;
                HasRatings        = Visibility.Visible;
                DoesntHaveRatings = Visibility.Collapsed;
            }
            else
            {
                AverageRating     = 0;
                HasRatings        = Visibility.Collapsed;
                DoesntHaveRatings = Visibility.Visible;
            }
        }
		public void TestConstructor()
		{
			var ratings = new Ratings();
			ratings.Add(0, 0, 5.0f);
			ratings.Add(0, 1, 4.5f);
			ratings.Add(1, 0, 1.0f);
			ratings.Add(1, 1, 2.5f);

			var split1 = new RatingsSimpleSplit(ratings, 0.25);
			Assert.AreEqual(3, split1.Train[0].Count);
			Assert.AreEqual(1, split1.Test[0].Count);

			var split2 = new RatingsSimpleSplit(ratings, 0.5);
			Assert.AreEqual(2, split2.Train[0].Count);
			Assert.AreEqual(2, split2.Test[0].Count);
		}
        [Test()] public void TestComputeCorrelation()
        {
            // create test objects
            var ratings = new Ratings();

            ratings.Add(0, 1, 0.3f);
            ratings.Add(0, 4, 0.2f);
            ratings.Add(1, 2, 0.6f);
            ratings.Add(1, 3, 0.4f);
            ratings.Add(1, 4, 0.2f);

            // test
            var p = new Pearson(ratings.AllUsers.Count, 0f);

            Assert.AreEqual(0, p.ComputeCorrelation(ratings, EntityType.USER, 0, 1));
        }
Ejemplo n.º 20
0
        async Task ExecuteLoadLectionRatingsCommand()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;

            try
            {
                Ratings.Clear();
                //var messages = await DataStore.GetAllMessagesAsync(true);
                var result = await DataStore.GetAllLecitonRatings();

                foreach (var rating in result)
                {
                    Ratings.Add(rating);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
            finally
            {
                IsBusy = false;
            }
        }
Ejemplo n.º 21
0
        private void SaveNewRating(object x = null)
        {
            if (RatingNewDetailModel.Nick == null || RatingNewDetailModel.NumericEvaluation <= 0)
            {
                _messageDialogService.Show(
                    "Error",
                    $"Please specify correct nick and numerical rating.",
                    MessageDialogButtonConfiguration.OK,
                    MessageDialogResult.OK);

                return;
            }
            RatingNewDetailModel.RatedMovieId = DisplayDetailModel.Id;

            _ratingRepository.Create(RatingNewDetailModel);
            Ratings.Add(RatingNewDetailModel);

            AverageRating = (AverageRating == 0.0)
                ? RatingNewDetailModel.NumericEvaluation
                : (AverageRating + RatingNewDetailModel.NumericEvaluation) / 2;
            HasRatings        = Visibility.Visible;
            DoesntHaveRatings = Visibility.Collapsed;

            DiscardNewRating();
        }
Ejemplo n.º 22
0
 public void AddRatings()
 {
     Ratings.Add(new Rating(_name, _ratingComment, _ratingStjerner));
     Name           = "";
     RatingComment  = "";
     RatingStjerner = "";
 }
Ejemplo n.º 23
0
    private void RatingCellEdited(object o, EditedArgs args)
    {
        TreeIter iter;

        treeview1.Model.GetIter(out iter, new TreePath(args.Path));

        Movie  movie = (Movie)treeview1.Model.GetValue(iter, 0);
        string input = args.NewText.Trim();

        if (input == string.Empty)
        {
            Console.Error.WriteLine("Remove rating.");
            if (ratings.Remove(movie.ID))
            {
                var ds = new Ratings();
                ds.Add(current_user_id, movie.ID, 0);
                rating_predictor.RemoveRatings(ds);
            }

            PredictAllRatings();
            return;
        }

        input = input.Replace(',', '.');         // also allow "German" floating point numbers

        try
        {
            float rating = float.Parse(input, CultureInfo.InvariantCulture);

            if (rating > rating_predictor.MaxRating)
            {
                rating = rating_predictor.MaxRating;
            }
            if (rating < rating_predictor.MinRating)
            {
                rating = rating_predictor.MinRating;
            }

            var r = new Ratings();
            r.Add(current_user_id, movie.ID, rating);

            // if rating already exists, remove it first
            if (ratings.ContainsKey(movie.ID))
            {
                rating_predictor.RemoveRatings(r);
            }

            // add the new rating
            rating_predictor.AddRatings(r);
            ratings[movie.ID] = rating;

            // recompute ratings
            PredictAllRatings();
        }
        catch (FormatException)
        {
            Console.Error.WriteLine("Could not parse input '{0}' as a number.", input);
        }
    }
Ejemplo n.º 24
0
        public void TestNewUserInTestSet()
        {
            var recommender = new BiPolarSlopeOne();

            recommender.MinRating = 1;
            recommender.MaxRating = 5;

            var training_data = new Ratings();

            training_data.Add(0, 0, 1.0);
            training_data.Add(1, 1, 5.0);

            recommender.Ratings = training_data;
            recommender.Train();

            Assert.AreEqual(3.0, recommender.Predict(2, 1));
        }
Ejemplo n.º 25
0
        public void TestCountByUserCountByItem()
        {
            var ratings = new Ratings();
            ratings.Add(1, 4, 0.3);
            ratings.Add(1, 8, 0.2);
            ratings.Add(2, 4, 0.2);
            ratings.Add(2, 2, 0.6);
            ratings.Add(2, 5, 0.4);
            ratings.Add(3, 7, 0.2);
            ratings.Add(6, 3, 0.3);

            Assert.AreEqual(0, ratings.CountByUser[0]);
            Assert.AreEqual(2, ratings.CountByUser[1]);
            Assert.AreEqual(3, ratings.CountByUser[2]);
            Assert.AreEqual(1, ratings.CountByUser[3]);
            Assert.AreEqual(0, ratings.CountByUser[4]);
            Assert.AreEqual(0, ratings.CountByUser[5]);
            Assert.AreEqual(1, ratings.CountByUser[6]);

            Assert.AreEqual(0, ratings.CountByItem[0]);
            Assert.AreEqual(0, ratings.CountByItem[1]);
            Assert.AreEqual(1, ratings.CountByItem[2]);
            Assert.AreEqual(1, ratings.CountByItem[3]);
            Assert.AreEqual(2, ratings.CountByItem[4]);
            Assert.AreEqual(1, ratings.CountByItem[5]);
            Assert.AreEqual(0, ratings.CountByItem[6]);
            Assert.AreEqual(1, ratings.CountByItem[7]);
            Assert.AreEqual(1, ratings.CountByItem[8]);
        }
        [Test()] public void TestCountByUserCountByItem()
        {
            var ratings = new Ratings();

            ratings.Add(1, 4, 0.3f);
            ratings.Add(1, 8, 0.2f);
            ratings.Add(2, 4, 0.2f);
            ratings.Add(2, 2, 0.6f);
            ratings.Add(2, 5, 0.4f);
            ratings.Add(3, 7, 0.2f);
            ratings.Add(6, 3, 0.3f);

            Assert.AreEqual(0, ratings.CountByUser[0]);
            Assert.AreEqual(2, ratings.CountByUser[1]);
            Assert.AreEqual(3, ratings.CountByUser[2]);
            Assert.AreEqual(1, ratings.CountByUser[3]);
            Assert.AreEqual(0, ratings.CountByUser[4]);
            Assert.AreEqual(0, ratings.CountByUser[5]);
            Assert.AreEqual(1, ratings.CountByUser[6]);

            Assert.AreEqual(0, ratings.CountByItem[0]);
            Assert.AreEqual(0, ratings.CountByItem[1]);
            Assert.AreEqual(1, ratings.CountByItem[2]);
            Assert.AreEqual(1, ratings.CountByItem[3]);
            Assert.AreEqual(2, ratings.CountByItem[4]);
            Assert.AreEqual(1, ratings.CountByItem[5]);
            Assert.AreEqual(0, ratings.CountByItem[6]);
            Assert.AreEqual(1, ratings.CountByItem[7]);
            Assert.AreEqual(1, ratings.CountByItem[8]);
        }
        [Test()] public void TestAddAndRemove()
        {
            var ratings = new Ratings();

            ratings.Add(1, 4, 0.3f);
            ratings.Add(1, 8, 0.2f);
            ratings.Add(2, 4, 0.2f);
            ratings.Add(2, 2, 0.6f);
            ratings.Add(2, 5, 0.4f);
            ratings.Add(3, 7, 0.2f);
            ratings.Add(6, 3, 0.3f);

            Assert.AreEqual(0.4f, ratings[2, 5]);
            Assert.AreEqual(0.3f, ratings[1, 4]);
            Assert.AreEqual(0.3f, ratings[6, 3]);
            Assert.AreEqual(7, ratings.Count);

            ratings.RemoveAt(ratings.GetIndex(1, 4));
            Assert.AreEqual(6, ratings.Count);
            ratings.RemoveAt(ratings.GetIndex(1, 8));
            Assert.AreEqual(5, ratings.Count);
            ratings.RemoveAt(ratings.GetIndex(2, 5));
            Assert.AreEqual(4, ratings.Count);
            ratings.RemoveAt(ratings.GetIndex(2, 2));
            Assert.AreEqual(3, ratings.Count);
            ratings.RemoveAt(ratings.GetIndex(2, 4));
            Assert.AreEqual(2, ratings.Count);
            ratings.RemoveAt(ratings.GetIndex(3, 7));
            Assert.AreEqual(1, ratings.Count);
            ratings.RemoveAt(ratings.GetIndex(6, 3));
            Assert.AreEqual(0, ratings.Count);
        }
Ejemplo n.º 28
0
		[Test()] public void TestAddAndRemove()
		{
			var ratings = new Ratings();
			ratings.Add(1, 4, 0.3f);
			ratings.Add(1, 8, 0.2f);
			ratings.Add(2, 4, 0.2f);
			ratings.Add(2, 2, 0.6f);
			ratings.Add(2, 5, 0.4f);
			ratings.Add(3, 7, 0.2f);
			ratings.Add(6, 3, 0.3f);

			Assert.AreEqual(0.4f, ratings[2, 5]);
			Assert.AreEqual(0.3f, ratings[1, 4]);
			Assert.AreEqual(0.3f, ratings[6, 3]);
			Assert.AreEqual(7, ratings.Count);

			ratings.RemoveAt(ratings.GetIndex(1, 4));
			Assert.AreEqual(6, ratings.Count);
			ratings.RemoveAt(ratings.GetIndex(1, 8));
			Assert.AreEqual(5, ratings.Count);
			ratings.RemoveAt(ratings.GetIndex(2, 5));
			Assert.AreEqual(4, ratings.Count);
			ratings.RemoveAt(ratings.GetIndex(2, 2));
			Assert.AreEqual(3, ratings.Count);
			ratings.RemoveAt(ratings.GetIndex(2, 4));
			Assert.AreEqual(2, ratings.Count);
			ratings.RemoveAt(ratings.GetIndex(3, 7));
			Assert.AreEqual(1, ratings.Count);
			ratings.RemoveAt(ratings.GetIndex(6, 3));
			Assert.AreEqual(0, ratings.Count);
		}
        public void TestConstructor()
        {
            var ratings = new Ratings();

            ratings.Add(0, 0, 5.0f);
            ratings.Add(0, 1, 4.5f);
            ratings.Add(1, 0, 1.0f);
            ratings.Add(1, 1, 2.5f);

            var split1 = new RatingsSimpleSplit(ratings, 0.25);

            Assert.AreEqual(3, split1.Train[0].Count);
            Assert.AreEqual(1, split1.Test[0].Count);

            var split2 = new RatingsSimpleSplit(ratings, 0.5);

            Assert.AreEqual(2, split2.Train[0].Count);
            Assert.AreEqual(2, split2.Test[0].Count);
        }
Ejemplo n.º 30
0
 private void AdjustTeam(
     string team,
     NibbleRating rating)
 {
     if (!Ratings.ContainsKey(team))
     {
         Ratings.Add(team, new NibbleRating());
     }
     Ratings[team].Offence += rating.Offence;
     Ratings[team].Defence += rating.Defence;
 }
Ejemplo n.º 31
0
        public override void Train(Split split)
        {
            var mmlInstance = (FM)MmlRecommenderInstance;
            var featBuilder = new FmFeatureBuilder();

            var wFm = MmlRecommenderInstance as WeightedBPRFM;

            if (DataType == WrapRec.IO.DataType.Ratings)
            {
                var mmlFeedback = new Ratings();
                foreach (var feedback in split.Train)
                {
                    var rating = (Rating)feedback;
                    mmlFeedback.Add(UsersMap.ToInternalID(rating.User.Id), ItemsMap.ToInternalID(rating.Item.Id), rating.Value);

                    // the attributes are translated so that they can be used later for training
                    foreach (var attr in feedback.GetAllAttributes())
                    {
                        attr.Translation = featBuilder.TranslateAttribute(attr);
                        // hard code attribute group. User is 0, item is 1, others is 2
                        attr.Group = 2;
                        if (wFm != null && !wFm.FeatureGroups.ContainsKey(attr.Translation.Item1))
                        {
                            wFm.FeatureGroups.Add(attr.Translation.Item1, 2);
                        }
                    }
                }
                ((IRatingPredictor)MmlRecommenderInstance).Ratings = mmlFeedback;
            }

            foreach (var feedback in split.Test)
            {
                // the attributes are translated so that they can be used later for training
                foreach (var attr in feedback.GetAllAttributes())
                {
                    attr.Translation = featBuilder.TranslateAttribute(attr);
                    // hard code attribute group. User is 0, item is 1, others is 2
                    attr.Group = 2;
                    if (wFm != null && !wFm.FeatureGroups.ContainsKey(attr.Translation.Item1))
                    {
                        wFm.FeatureGroups.Add(attr.Translation.Item1, 2);
                    }
                }
            }

            mmlInstance.Split          = split;
            mmlInstance.Model          = this;
            mmlInstance.UsersMap       = UsersMap;
            mmlInstance.ItemsMap       = ItemsMap;
            mmlInstance.FeatureBuilder = featBuilder;

            Logger.Current.Trace("Training with MmlFmRecommender recommender...");
            PureTrainTime = (int)Wrap.MeasureTime(delegate() { mmlInstance.Train(); }).TotalMilliseconds;
        }
Ejemplo n.º 32
0
		IRatings CreateRatings()
		{
			var ratings = new Ratings();
			ratings.Add(1, 4, 0.3f);
			ratings.Add(1, 8, 0.2f);
			ratings.Add(2, 4, 0.2f);
			ratings.Add(2, 2, 0.6f);
			ratings.Add(2, 5, 0.4f);
			ratings.Add(3, 7, 0.2f);
			ratings.Add(3, 3, 0.3f);
			ratings.Add(6, 3, 0.3f);

			return ratings;
		}
Ejemplo n.º 33
0
        IRatings CreateRatings()
        {
            var ratings = new Ratings();

            ratings.Add(1, 4, 0.3f);
            ratings.Add(1, 8, 0.2f);
            ratings.Add(2, 4, 0.2f);
            ratings.Add(2, 2, 0.6f);
            ratings.Add(2, 5, 0.4f);
            ratings.Add(3, 7, 0.2f);
            ratings.Add(3, 3, 0.3f);
            ratings.Add(6, 3, 0.3f);

            return(ratings);
        }
        public void TestIncrementalUpdates()
        {
            var mf = new BiasedMatrixFactorization()
            {
                Ratings = TestUtils.CreateRatings(), FrequencyRegularization = true
            };

            mf.Train();

            var new_ratings = new Ratings();

            new_ratings.Add(mf.MaxUserID + 1, mf.MaxItemID + 1, 3f);
            mf.AddRatings(new_ratings);
        }
Ejemplo n.º 35
0
        public static IRatings CreateRandomRatings(int num_users, int num_items, int num_ratings)
        {
            var random = MyMediaLite.Random.GetInstance();

            var ratings = new Ratings();
            for (int i = 0; i < num_ratings; i++)
            {
                int user_id = random.Next(num_users);
                int item_id = random.Next(num_items);
                int rating_value = 1 + random.Next(5);
                ratings.Add(user_id, item_id, rating_value);
            }
            return ratings;
        }
Ejemplo n.º 36
0
        public static IRatings CreateRandomRatings(int num_users, int num_items, int num_ratings)
        {
            var random = MyMediaLite.Random.GetInstance();

            var ratings = new Ratings();

            for (int i = 0; i < num_ratings; i++)
            {
                int user_id      = random.Next(num_users);
                int item_id      = random.Next(num_items);
                int rating_value = 1 + random.Next(5);
                ratings.Add(user_id, item_id, rating_value);
            }
            return(ratings);
        }
Ejemplo n.º 37
0
        public void AddRating(User user, decimal value, string comment)
        {
            if (Ratings == null)
            {
                Ratings = new List <Rating>();
            }

            if (Ratings.Any(r => r.UserId == user.Id))
            {
                throw SheaftException.Validation("Vous avez déjà noté ce produit.");
            }

            Ratings.Add(new Rating(Guid.NewGuid(), value, user, comment));
            RefreshRatings();
        }
Ejemplo n.º 38
0
 public void RateTrainingsSchema(TrainingsSchema trainingsSchema, int rating)
 {
     foreach (var el in Ratings.Where(item => item.TrainingsSchema == trainingsSchema && item.TraineeId == TraineeId).ToList())
     {
         Ratings.Remove(el);
     }
     Ratings.Add(new TraineeRating()
     {
         TrainingsSchemaId = trainingsSchema.Id,
         TraineeId         = TraineeId,
         TrainingsSchema   = trainingsSchema,
         Trainee           = this,
         Rating            = rating
     });
 }
        [Test()] public void TestRemoveAt()
        {
            var ratings = new Ratings();

            ratings.Add(1, 4, 0.3f);
            ratings.Add(1, 8, 0.2f);
            ratings.Add(2, 4, 0.2f);
            ratings.Add(2, 2, 0.6f);
            ratings.Add(2, 5, 0.4f);
            ratings.Add(3, 7, 0.2f);
            ratings.Add(3, 3, 0.3f);
            ratings.Add(6, 3, 0.3f);

            Assert.AreEqual(8, ratings.Count);
            Assert.AreEqual(0.4f, ratings[2, 5]);
            Assert.AreEqual(3, ratings.ByUser[2].Count);
            Assert.AreEqual(1, ratings.ByUser[6].Count);
            Assert.AreEqual(2, ratings.ByItem[3].Count);
            Assert.AreEqual(1, ratings.ByItem[5].Count);
            Assert.AreEqual(3, ratings.CountByUser[2]);
            Assert.AreEqual(1, ratings.CountByUser[6]);
            Assert.AreEqual(2, ratings.CountByItem[3]);
            Assert.AreEqual(1, ratings.CountByItem[5]);
            Assert.AreEqual(8, ratings.RandomIndex.Count);

            ratings.RemoveAt(ratings.GetIndex(2, 5));
            Assert.AreEqual(7, ratings.Count);
            Assert.AreEqual(2, ratings.ByUser[2].Count);
            Assert.AreEqual(0, ratings.ByItem[5].Count);
            Assert.AreEqual(2, ratings.CountByUser[2]);
            Assert.AreEqual(0, ratings.CountByItem[5]);
            Assert.AreEqual(7, ratings.RandomIndex.Count);

            ratings.RemoveAt(ratings.GetIndex(6, 3));
            Assert.AreEqual(6, ratings.Count);
            Assert.AreEqual(0, ratings.ByUser[6].Count);
            Assert.AreEqual(1, ratings.ByItem[3].Count);
            Assert.AreEqual(0, ratings.CountByUser[6]);
            Assert.AreEqual(1, ratings.CountByItem[3]);
            Assert.AreEqual(6, ratings.RandomIndex.Count);

            float r;

            Assert.IsFalse(ratings.TryGet(2, 5, out r));
        }
Ejemplo n.º 40
0
 public void WriteRating(int userId, double newRating)
 {
     if (HasUserWrittenRating(userId))
     {
         Ratings.FirstOrDefault(c => c.UserId == userId && c.StoryId == this.Id).Score = newRating;
         AverageRating = Ratings.Average(r => r.Score);
     }
     else
     {
         Ratings.Add(new Rating()
         {
             StoryId = this.Id, UserId = userId, Score = newRating
         });
         AverageRating = ((AverageRating * (NumberOfRatings - 1)) + newRating) / NumberOfRatings;
     }
 }
Ejemplo n.º 41
0
		[Test()] public void TestMinRatingMaxRating()
		{
			var ratings = new Ratings();
			ratings.Add(1, 4, 0.3f);
			ratings.Add(1, 8, 0.2f);
			ratings.Add(2, 4, 0.2f);
			ratings.Add(2, 2, 0.6f);
			ratings.Add(2, 5, 0.4f);
			ratings.Add(3, 7, 0.2f);
			ratings.Add(6, 3, 0.3f);

			Assert.AreEqual(0.6f, ratings.Scale.Max);
			Assert.AreEqual(0.2f, ratings.Scale.Min);
		}
Ejemplo n.º 42
0
        public void TestByUserByItem()
        {
            var ratings = new Ratings();
            ratings.Add(1, 4, 0.3);
            ratings.Add(1, 8, 0.2);
            ratings.Add(2, 4, 0.2);
            ratings.Add(2, 2, 0.6);
            ratings.Add(2, 5, 0.4);
            ratings.Add(3, 7, 0.2);
            ratings.Add(6, 3, 0.3);

            Assert.IsTrue(new HashSet<int>( new int[] { 0, 1 } ).SetEquals(ratings.ByUser[1]));
            Assert.IsTrue(new HashSet<int>( new int[] { 0, 2 } ).SetEquals(ratings.ByItem[4]));
        }
Ejemplo n.º 43
0
		[Test()] public void TestMaxUserIDMaxItemID()
		{
			var ratings = new Ratings();
			ratings.Add(1, 4, 0.3f);
			ratings.Add(1, 8, 0.2f);
			ratings.Add(2, 4, 0.2f);
			ratings.Add(2, 2, 0.6f);
			ratings.Add(2, 5, 0.4f);
			ratings.Add(3, 7, 0.2f);
			ratings.Add(6, 3, 0.3f);

			Assert.AreEqual(6, ratings.MaxUserID);
			Assert.AreEqual(8, ratings.MaxItemID);
		}
Ejemplo n.º 44
0
        IRatings CreateRatings1()
        {
            var ratings = new Ratings();

            ratings.Add(1, 4, 0.3);
            ratings.Add(1, 8, 0.2);
            ratings.Add(2, 4, 0.2);
            ratings.Add(2, 2, 0.6);
            ratings.Add(2, 5, 0.4);
            ratings.Add(3, 7, 0.2);
            ratings.Add(6, 3, 0.3);

            return(ratings);
        }
Ejemplo n.º 45
0
        public AddCosmeticViewModel(CosmeticDbContext context)
        {
            foreach (var color in context.Colors.ToList())
            {
                Colors.Add(new SelectListItem
                {
                    Value = color.ID.ToString(),
                    Text  = color.Value
                });
            }

            foreach (var skinType in context.SkinTypes.ToList())
            {
                SkinTypes.Add(new SelectListItem
                {
                    Value = skinType.ID.ToString(),
                    Text  = skinType.Value
                });
            }

            foreach (var formulation in context.Formulations.ToList())
            {
                Formulations.Add(new SelectListItem
                {
                    Value = formulation.ID.ToString(),
                    Text  = formulation.Value
                });
            }

            foreach (var rating in context.Ratings.ToList())
            {
                Ratings.Add(new SelectListItem
                {
                    Value = rating.ID.ToString(),
                    Text  = rating.Value
                });
            }

            foreach (var finish in context.Finishs.ToList())
            {
                Finishs.Add(new SelectListItem
                {
                    Value = finish.ID.ToString(),
                    Text  = finish.Value
                });
            }
        }
        [Test()] public void TestIndex()
        {
            var ratings = new Ratings();

            ratings.Add(1, 4, 0.3f);
            ratings.Add(1, 8, 0.2f);
            ratings.Add(2, 4, 0.2f);
            ratings.Add(2, 2, 0.6f);
            ratings.Add(2, 5, 0.4f);
            ratings.Add(3, 4, 0.2f);
            ratings.Add(3, 3, 0.3f);
            ratings.Add(6, 3, 0.3f);

            // test index[,]
            Assert.AreEqual(0.3f, ratings[1, 4]);
            Assert.AreEqual(0.2f, ratings[1, 8]);
            Assert.AreEqual(0.6f, ratings[2, 2]);
        }
        [Test()] public void TestByUserByItem()
        {
            var ratings = new Ratings();

            ratings.Add(1, 4, 0.3f);
            ratings.Add(1, 8, 0.2f);
            ratings.Add(2, 4, 0.2f);
            ratings.Add(2, 2, 0.6f);
            ratings.Add(2, 5, 0.4f);
            ratings.Add(3, 7, 0.2f);
            ratings.Add(6, 3, 0.3f);

            Assert.IsTrue(new HashSet <int>(new int[] { 0, 1 }).SetEquals(ratings.ByUser[1]));
            Assert.IsTrue(new HashSet <int>(new int[] { 0, 2 }).SetEquals(ratings.ByItem[4]));
        }
Ejemplo n.º 48
0
        public void TestAddRating()
        {
            var ratings = new Ratings();
            ratings.Add(1, 4, 0.3);
            ratings.Add(1, 8, 0.2);
            ratings.Add(2, 4, 0.2);
            ratings.Add(2, 2, 0.6);
            ratings.Add(2, 5, 0.4);
            ratings.Add(3, 7, 0.2);
            ratings.Add(6, 3, 0.3);

            Assert.AreEqual(0.4, ratings.Get(2, 5));
            Assert.AreEqual(0.3, ratings.Get(1, 4));
            Assert.AreEqual(0.3, ratings.Get(6, 3));
            Assert.AreEqual(7, ratings.Count);
        }
Ejemplo n.º 49
0
		[Test()] public void TestAdd()
		{
			var ratings = new Ratings();
			ratings.Add(1, 4, 0.3f);
			ratings.Add(1, 8, 0.2f);
			ratings.Add(2, 4, 0.2f);
			ratings.Add(2, 2, 0.6f);
			ratings.Add(2, 5, 0.4f);
			ratings.Add(3, 7, 0.2f);
			ratings.Add(6, 3, 0.3f);

			Assert.AreEqual(0.4f, ratings[2, 5]);
			Assert.AreEqual(0.3f, ratings[1, 4]);
			Assert.AreEqual(0.3f, ratings[6, 3]);
			Assert.AreEqual(7, ratings.Count);
		}
Ejemplo n.º 50
0
		[Test()] public void TestCreate()
		{
			var ratings = new Ratings();
			ratings.Add(0, 1, 0.3f);
			ratings.Add(0, 2, 0.6f);
			ratings.Add(0, 4, 0.2f);
			ratings.Add(1, 3, 0.4f);
			ratings.Add(1, 4, 0.2f);
			ratings.Add(2, 0, 0.1f);
			ratings.Add(2, 1, 0.3f);

			var correlation_matrix = new Pearson(ratings.MaxUserID + 1, 0f);
			correlation_matrix.ComputeCorrelations(ratings, EntityType.USER);
			Assert.AreEqual(3, correlation_matrix.NumberOfRows);
			Assert.IsTrue(correlation_matrix.IsSymmetric);
			Assert.AreEqual(0, correlation_matrix[0, 1]);
		}
Ejemplo n.º 51
0
		[Test()] public void TestComputeCorrelations()
		{
			// create test objects
			var pearson = new Pearson(3, 0f);
			var rating_data = new Ratings();
			rating_data.Add(0, 1, 0.3f);
			rating_data.Add(0, 2, 0.6f);
			rating_data.Add(0, 4, 0.2f);
			rating_data.Add(1, 3, 0.4f);
			rating_data.Add(1, 4, 0.2f);
			rating_data.Add(2, 0, 0.1f);
			rating_data.Add(2, 1, 0.3f);
			// test
			pearson.Shrinkage = 0;
			pearson.ComputeCorrelations(rating_data, EntityType.USER);

			Assert.AreEqual(0, pearson[0, 2]);
		}
Ejemplo n.º 52
0
    private void RatingCellEdited(object o, EditedArgs args)
    {
        TreeIter iter;
        treeview1.Model.GetIter(out iter, new TreePath(args.Path));

        Movie movie = (Movie) treeview1.Model.GetValue(iter, 0);
        string input = args.NewText.Trim();

        if (input == string.Empty)
        {
            Console.Error.WriteLine("Remove rating.");
            if (ratings.Remove(movie.ID))
            {
                var ds = new Ratings();
                ds.Add(current_user_id, movie.ID, 0);
                rating_predictor.RemoveRatings(ds);
            }

            PredictAllRatings();
            return;
        }

        input = input.Replace(',', '.'); // also allow "German" floating point numbers

        try
        {
            float rating = float.Parse(input, CultureInfo.InvariantCulture);

            if (rating > rating_predictor.MaxRating)
                rating = rating_predictor.MaxRating;
            if (rating < rating_predictor.MinRating)
                rating = rating_predictor.MinRating;

            var r = new Ratings();
            r.Add(current_user_id, movie.ID, rating);

            // if rating already exists, remove it first
            if (ratings.ContainsKey(movie.ID))
                rating_predictor.RemoveRatings(r);

            // add the new rating
            rating_predictor.AddRatings(r);
            ratings[movie.ID] = rating;

            // recompute ratings
            PredictAllRatings();
        }
        catch (FormatException)
        {
            Console.Error.WriteLine("Could not parse input '{0}' as a number.", input);
        }
    }
Ejemplo n.º 53
0
        public void TestRemoveUser()
        {
            var ratings = new Ratings();
            ratings.Add(1, 4, 0.3);
            ratings.Add(1, 8, 0.2);
            ratings.Add(2, 4, 0.2);
            ratings.Add(2, 2, 0.6);
            ratings.Add(2, 5, 0.4);
            ratings.Add(3, 7, 0.2);
            ratings.Add(3, 3, 0.3);

            Assert.AreEqual(7, ratings.Count);
            Assert.AreEqual(0.4, ratings.Get(2, 5));
            ratings.RemoveUser(2);
            Assert.AreEqual(5, ratings.Count);

            double rating;
            Assert.IsFalse(ratings.TryGet(2, 5, out rating));
        }
Ejemplo n.º 54
0
        public void TestRemoveItem()
        {
            var ratings = new Ratings();
            ratings.Add(1, 4, 0.3);
            ratings.Add(1, 8, 0.2);
            ratings.Add(2, 4, 0.2);
            ratings.Add(2, 2, 0.6);
            ratings.Add(2, 5, 0.4);
            ratings.Add(3, 4, 0.2);
            ratings.Add(3, 3, 0.3);

            Assert.AreEqual(7, ratings.Count);
            Assert.AreEqual(0.2, ratings.Get(2, 4));
            ratings.RemoveItem(4);
            Assert.AreEqual(4, ratings.Count);
            double r;
            Assert.IsFalse(ratings.TryGet(2, 4, out r));
        }
Ejemplo n.º 55
0
        public void TestRemoveAt()
        {
            var ratings = new Ratings();
            ratings.Add(1, 4, 0.3);
            ratings.Add(1, 8, 0.2);
            ratings.Add(2, 4, 0.2);
            ratings.Add(2, 2, 0.6);
            ratings.Add(2, 5, 0.4);
            ratings.Add(3, 7, 0.2);
            ratings.Add(3, 3, 0.3);
            ratings.Add(6, 3, 0.3);

            Assert.AreEqual(8, ratings.Count);
            Assert.AreEqual(0.4, ratings.Get(2, 5));
            ratings.RemoveAt(ratings.GetIndex(2, 5));
            Assert.AreEqual(7, ratings.Count);
            ratings.RemoveAt(ratings.GetIndex(6, 3));
            Assert.AreEqual(6, ratings.Count);

            double r;
            Assert.IsFalse(ratings.TryGet(2, 5, out r));
        }
Ejemplo n.º 56
0
        public void TestGet()
        {
            var ratings = new Ratings();
            ratings.Add(1, 4, 0.3);
            ratings.Add(1, 8, 0.2);
            ratings.Add(2, 4, 0.2);
            ratings.Add(2, 2, 0.6);
            ratings.Add(2, 5, 0.4);
            ratings.Add(3, 4, 0.2);
            ratings.Add(3, 3, 0.3);
            ratings.Add(6, 3, 0.3);

            // test Get
            Assert.AreEqual(0.2, ratings.Get(2, 4));
            Assert.AreEqual(0.3, ratings.Get(3, 3));
            Assert.AreEqual(0.3, ratings.Get(6, 3));

            // test index[,]
            Assert.AreEqual(0.3, ratings[1, 4]);
            Assert.AreEqual(0.2, ratings[1, 8]);
            Assert.AreEqual(0.6, ratings[2, 2]);
        }
Ejemplo n.º 57
0
		[Test()] public void TestRemoveAt()
		{
			var ratings = new Ratings();
			ratings.Add(1, 4, 0.3f);
			ratings.Add(1, 8, 0.2f);
			ratings.Add(2, 4, 0.2f);
			ratings.Add(2, 2, 0.6f);
			ratings.Add(2, 5, 0.4f);
			ratings.Add(3, 7, 0.2f);
			ratings.Add(3, 3, 0.3f);
			ratings.Add(6, 3, 0.3f);

			Assert.AreEqual(8, ratings.Count);
			Assert.AreEqual(0.4f, ratings[2, 5]);
			Assert.AreEqual(3, ratings.ByUser[2].Count);
			Assert.AreEqual(1, ratings.ByUser[6].Count);
			Assert.AreEqual(2, ratings.ByItem[3].Count);
			Assert.AreEqual(1, ratings.ByItem[5].Count);
			Assert.AreEqual(3, ratings.CountByUser[2]);
			Assert.AreEqual(1, ratings.CountByUser[6]);
			Assert.AreEqual(2, ratings.CountByItem[3]);
			Assert.AreEqual(1, ratings.CountByItem[5]);
			Assert.AreEqual(8, ratings.RandomIndex.Count);

			ratings.RemoveAt(ratings.GetIndex(2, 5));
			Assert.AreEqual(7, ratings.Count);
			Assert.AreEqual(2, ratings.ByUser[2].Count);
			Assert.AreEqual(0, ratings.ByItem[5].Count);
			Assert.AreEqual(2, ratings.CountByUser[2]);
			Assert.AreEqual(0, ratings.CountByItem[5]);
			Assert.AreEqual(7, ratings.RandomIndex.Count);

			ratings.RemoveAt(ratings.GetIndex(6, 3));
			Assert.AreEqual(6, ratings.Count);
			Assert.AreEqual(0, ratings.ByUser[6].Count);
			Assert.AreEqual(1, ratings.ByItem[3].Count);
			Assert.AreEqual(0, ratings.CountByUser[6]);
			Assert.AreEqual(1, ratings.CountByItem[3]);
			Assert.AreEqual(6, ratings.RandomIndex.Count);

			float r;
			Assert.IsFalse(ratings.TryGet(2, 5, out r));
		}
Ejemplo n.º 58
0
		[Test()] public void TestIndex()
		{
			var ratings = new Ratings();
			ratings.Add(1, 4, 0.3f);
			ratings.Add(1, 8, 0.2f);
			ratings.Add(2, 4, 0.2f);
			ratings.Add(2, 2, 0.6f);
			ratings.Add(2, 5, 0.4f);
			ratings.Add(3, 4, 0.2f);
			ratings.Add(3, 3, 0.3f);
			ratings.Add(6, 3, 0.3f);

			// test index[,]
			Assert.AreEqual(0.3f, ratings[1, 4]);
			Assert.AreEqual(0.2f, ratings[1, 8]);
			Assert.AreEqual(0.6f, ratings[2, 2]);
		}
Ejemplo n.º 59
0
		[Test()] public void TestRemoveItem()
		{
			var ratings = new Ratings();
			ratings.Add(1, 4, 0.3f);
			ratings.Add(1, 8, 0.2f);
			ratings.Add(2, 4, 0.2f);
			ratings.Add(2, 2, 0.6f);
			ratings.Add(2, 5, 0.4f);
			ratings.Add(3, 4, 0.2f);
			ratings.Add(3, 3, 0.3f);

			Assert.AreEqual(7, ratings.Count);
			Assert.AreEqual(0.2f, ratings[2, 4]);
			Assert.AreEqual(2, ratings.ByUser[1].Count);
			Assert.AreEqual(3, ratings.ByUser[2].Count);
			Assert.AreEqual(2, ratings.ByUser[3].Count);
			Assert.AreEqual(2, ratings.CountByUser[1]);
			Assert.AreEqual(3, ratings.CountByUser[2]);
			Assert.AreEqual(2, ratings.CountByUser[3]);

			ratings.RemoveItem(4);
			Assert.AreEqual(4, ratings.Count);
			Assert.AreEqual(1, ratings.ByUser[1].Count);
			Assert.AreEqual(2, ratings.ByUser[2].Count);
			Assert.AreEqual(1, ratings.ByUser[3].Count);
			Assert.AreEqual(1, ratings.CountByUser[1]);
			Assert.AreEqual(2, ratings.CountByUser[2]);
			Assert.AreEqual(1, ratings.CountByUser[3]);

			float r;
			Assert.IsFalse(ratings.TryGet(1, 4, out r));
			Assert.IsFalse(ratings.TryGet(2, 4, out r));
			Assert.IsFalse(ratings.TryGet(3, 4, out r));
		}
Ejemplo n.º 60
0
		[Test()] public void TestRemoveUser()
		{
			var ratings = new Ratings();
			ratings.Add(1, 4, 0.3f);
			ratings.Add(1, 8, 0.2f);
			ratings.Add(2, 4, 0.2f);
			ratings.Add(2, 2, 0.6f);
			ratings.Add(2, 5, 0.4f);
			ratings.Add(3, 7, 0.2f);
			ratings.Add(3, 3, 0.3f);

			Assert.AreEqual(7, ratings.Count);
			Assert.AreEqual(0.4f, ratings[2, 5]);
			Assert.AreEqual(1, ratings.ByItem[2].Count);
			Assert.AreEqual(2, ratings.ByItem[4].Count);
			Assert.AreEqual(1, ratings.ByItem[5].Count);
			Assert.AreEqual(1, ratings.CountByItem[2]);
			Assert.AreEqual(2, ratings.CountByItem[4]);
			Assert.AreEqual(1, ratings.CountByItem[5]);

			ratings.RemoveUser(2);
			Assert.AreEqual(4, ratings.Count);
			Assert.AreEqual(0, ratings.ByItem[2].Count);
			Assert.AreEqual(1, ratings.ByItem[4].Count);
			Assert.AreEqual(0, ratings.ByItem[5].Count);
			Assert.AreEqual(0, ratings.CountByItem[2]);
			Assert.AreEqual(1, ratings.CountByItem[4]);
			Assert.AreEqual(0, ratings.CountByItem[5]);

			float rating;
			Assert.IsFalse(ratings.TryGet(2, 5, out rating));
			Assert.IsFalse(ratings.TryGet(2, 4, out rating));
			Assert.IsFalse(ratings.TryGet(2, 2, out rating));
		}