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(); }
IRatings CreateRatings2() { var ratings = new Ratings(); ratings.Add(1, 5, 0.9f); ratings.Add(7, 9, 0.5f); ratings.InitScale(); return ratings; }
IRatings CreateRatings2() { var ratings = new Ratings(); ratings.Add(1, 5, 0.9); ratings.Add(7, 9, 0.5); return(ratings); }
IRatings CreateRatings2() { var ratings = new Ratings(); ratings.Add(1, 5, 0.9f); ratings.Add(7, 9, 0.5f); ratings.InitScale(); return(ratings); }
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) ); }
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)); }
[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)); }
[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)); }
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) ); }
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)); }
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); }
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); }
/// <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; }
public static IRatings CreateRatings() { var ratings = new Ratings(); ratings.Add(0, 0, 0.0f); return(ratings); }
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; }
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); }
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; } }
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(); }
public void AddRatings() { Ratings.Add(new Rating(_name, _ratingComment, _ratingStjerner)); Name = ""; RatingComment = ""; RatingStjerner = ""; }
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); } }
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)); }
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); }
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; }
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; }
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; }
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); }
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; }
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); }
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(); }
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)); }
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; } }
[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); }
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])); }
[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); }
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); }
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])); }
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); }
[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); }
[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]); }
[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]); }
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); } }
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)); }
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)); }
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)); }
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]); }
[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)); }
[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)); }