Example #1
0
        [Test()] public void TestComputeCorrelations2()
        {
            // load data from disk
            var user_mapping = new EntityMapping();
            var item_mapping = new EntityMapping();
            var ratings      = RatingPrediction.Read("../../../../data/ml100k/u1.base", user_mapping, item_mapping);

            Assert.AreEqual(-0.02855815f, Pearson.ComputeCorrelation(ratings, EntityType.ITEM, 45, 311, 200f), 0.00001);
        }
Example #2
0
    private void CreateRecommender()
    {
        BiasedMatrixFactorization recommender = new BiasedMatrixFactorization();

        Console.Error.Write("Reading in ratings ... ");
        TimeSpan time = Utils.MeasureTime(delegate() {
            recommender.Ratings = RatingPrediction.Read(ratings_file, user_mapping, item_mapping);
        });

        Console.Error.WriteLine("done ({0,0:0.##}).", time.TotalSeconds.ToString(CultureInfo.InvariantCulture));

        //Console.Error.Write("Reading in additional ratings ... ");
        //string[] rating_files = Directory.GetFiles("../../saved_data/", "user-ratings-*");
        //Console.Error.WriteLine("done.");

        foreach (var indices_for_item in recommender.Ratings.ByItem)
        {
            if (indices_for_item.Count > 0)
            {
                movies_by_frequency.Add(new WeightedItem(recommender.Ratings.Items[indices_for_item[0]], indices_for_item.Count));
            }
        }
        movies_by_frequency.Sort();
        movies_by_frequency.Reverse();
        for (int i = 0; i < n_movies; i++)
        {
            top_n_movies.Add(movies_by_frequency[i].item_id);
        }

        Console.Error.Write("Loading prediction model ... ");
        recommender.UpdateUsers    = true;
        recommender.UpdateItems    = false;
        recommender.BiasReg        = 0.001;
        recommender.Regularization = 0.045;
        recommender.NumIter        = 60;
        time = Utils.MeasureTime(delegate() {
            recommender.LoadModel(model_file);
        });
        Console.Error.WriteLine("done ({0,0:0.##}).", time.TotalSeconds.ToString(CultureInfo.InvariantCulture));

        rating_predictor = recommender;

        current_user_id = user_mapping.ToInternalID(current_user_external_id);
        //rating_predictor.AddUser(current_user_id);

        // add movies that were not in the training set
        //rating_predictor.AddItem( item_mapping.InternalIDs.Count - 1 );

        PredictAllRatings();
    }
Example #3
0
    void LoadRatings(string name)
    {
        // assumption: ratings, training data and model were reloaded

        ratings.Clear();

        using (var reader = new StreamReader("../../../../saved_data/user-ratings-" + name))
        {
            IRatings user_ratings = RatingPrediction.Read(reader, user_mapping, item_mapping);

            for (int i = 0; i < user_ratings.Count; i++)
            {
                ratings[user_ratings.Items[i]] = user_ratings[i];
                current_user_id = user_ratings.Users[i];                 // TODO check whether user ID is the same for all ratings
            }
        }
    }