Пример #1
0
        public void TestRead()
        {
            var reader = new StringReader(@"5951::50::5::881250949
5951::223::5::891717742
5951::260::5::878887116
5951::293::5::880606923
5951::356::4::886397596
5951::364::3::884182806
5951::457::3::879270459
");

            IRatings data = MovieLensRatingData.Read(reader, null, null);

            Assert.AreEqual(7, data.Count);
        }
Пример #2
0
    protected override void LoadData()
    {
        bool static_data = !online_eval;

        TimeSpan loading_time = Wrap.MeasureTime(delegate() {
            base.LoadData();

            // read training data
            if ((recommender is TimeAwareRatingPredictor || chronological_split != null) && file_format != RatingFileFormat.MOVIELENS_1M)
            {
                training_data = TimedRatingData.Read(training_file, user_mapping, item_mapping);
            }
            else
            {
                if (file_format == RatingFileFormat.DEFAULT)
                {
                    training_data = static_data
                                                ? StaticRatingData.Read(training_file, user_mapping, item_mapping, rating_type)
                                                : RatingData.Read(training_file, user_mapping, item_mapping);
                }
                else if (file_format == RatingFileFormat.IGNORE_FIRST_LINE)
                {
                    training_data = static_data
                                                ? StaticRatingData.Read(training_file, user_mapping, item_mapping, rating_type, TestRatingFileFormat.WITH_RATINGS, true)
                                                : RatingData.Read(training_file, user_mapping, item_mapping, true);
                }
                else if (file_format == RatingFileFormat.MOVIELENS_1M)
                {
                    training_data = MovieLensRatingData.Read(training_file, user_mapping, item_mapping);
                }
                else if (file_format == RatingFileFormat.KDDCUP_2011)
                {
                    training_data = MyMediaLite.IO.KDDCup2011.Ratings.Read(training_file);
                }
            }
            recommender.Ratings = training_data;

            // read test data
            if (test_file != null)
            {
                TestRatingFileFormat test_format = test_no_ratings ? TestRatingFileFormat.WITHOUT_RATINGS : TestRatingFileFormat.WITH_RATINGS;
                if (recommender is TimeAwareRatingPredictor && file_format != RatingFileFormat.MOVIELENS_1M)
                {
                    test_data = TimedRatingData.Read(test_file, user_mapping, item_mapping, test_format);
                }
                else if (file_format == RatingFileFormat.MOVIELENS_1M)
                {
                    test_data = MovieLensRatingData.Read(test_file, user_mapping, item_mapping, test_format);
                }
                else if (file_format == RatingFileFormat.KDDCUP_2011)
                {
                    test_data = MyMediaLite.IO.KDDCup2011.Ratings.Read(test_file);
                }
                else
                {
                    test_data = StaticRatingData.Read(test_file, user_mapping, item_mapping, rating_type, test_format, file_format == RatingFileFormat.IGNORE_FIRST_LINE);
                }

                if (recommender is ITransductiveRatingPredictor)
                {
                    ((ITransductiveRatingPredictor)recommender).AdditionalFeedback = test_data;
                }
            }
        });

        Console.Error.WriteLine(string.Format(CultureInfo.InvariantCulture, "loading_time {0:0.##}", loading_time.TotalSeconds));
        Console.Error.WriteLine("memory {0}", Memory.Usage);
    }
Пример #3
0
    static void LoadData(string data_dir,
                         string user_attributes_file, string item_attributes_file,
                         string user_relation_file, string item_relation_file,
                         bool static_data)
    {
        if (training_file == null)
        {
            Usage("Program expects --training-file=FILE.");
        }

        TimeSpan loading_time = Utils.MeasureTime(delegate() {
            // read training data
            if (file_format == RatingFileFormat.DEFAULT)
            {
                training_data = static_data ? RatingPredictionStatic.Read(Path.Combine(data_dir, training_file), user_mapping, item_mapping, rating_type)
                                                                : MyMediaLite.IO.RatingPrediction.Read(Path.Combine(data_dir, training_file), user_mapping, item_mapping);
            }
            else if (file_format == RatingFileFormat.MOVIELENS_1M)
            {
                training_data = MovieLensRatingData.Read(Path.Combine(data_dir, training_file), user_mapping, item_mapping);
            }
            else if (file_format == RatingFileFormat.KDDCUP_2011)
            {
                training_data = MyMediaLite.IO.KDDCup2011.Ratings.Read(Path.Combine(data_dir, training_file));
            }

            recommender.Ratings = training_data;

            // user attributes
            if (recommender is IUserAttributeAwareRecommender)             // TODO also support the MovieLens format here
            {
                if (user_attributes_file == string.Empty)
                {
                    Usage("Recommender expects --user-attributes=FILE.");
                }
                else
                {
                    ((IUserAttributeAwareRecommender)recommender).UserAttributes = AttributeData.Read(Path.Combine(data_dir, user_attributes_file), user_mapping);
                }
            }

            // item attributes
            if (recommender is IItemAttributeAwareRecommender)
            {
                if (item_attributes_file == string.Empty)
                {
                    Usage("Recommender expects --item-attributes=FILE.");
                }
                else
                {
                    ((IItemAttributeAwareRecommender)recommender).ItemAttributes = AttributeData.Read(Path.Combine(data_dir, item_attributes_file), item_mapping);
                }
            }

            // user relation
            if (recommender is IUserRelationAwareRecommender)
            {
                if (user_relation_file == string.Empty)
                {
                    Usage("Recommender expects --user-relations=FILE.");
                }
                else
                {
                    ((IUserRelationAwareRecommender)recommender).UserRelation = RelationData.Read(Path.Combine(data_dir, user_relation_file), user_mapping);
                    Console.WriteLine("relation over {0} users", ((IUserRelationAwareRecommender)recommender).NumUsers);
                }
            }

            // item relation
            if (recommender is IItemRelationAwareRecommender)
            {
                if (user_relation_file == string.Empty)
                {
                    Usage("Recommender expects --item-relations=FILE.");
                }
                else
                {
                    ((IItemRelationAwareRecommender)recommender).ItemRelation = RelationData.Read(Path.Combine(data_dir, item_relation_file), item_mapping);
                    Console.WriteLine("relation over {0} items", ((IItemRelationAwareRecommender)recommender).NumItems);
                }
            }

            // read test data
            if (test_file != null)
            {
                if (file_format == RatingFileFormat.MOVIELENS_1M)
                {
                    test_data = MovieLensRatingData.Read(Path.Combine(data_dir, test_file), user_mapping, item_mapping);
                }
                else
                {
                    test_data = RatingPredictionStatic.Read(Path.Combine(data_dir, test_file), user_mapping, item_mapping, rating_type);
                }
                // TODO add KDD Cup
            }
        });

        Console.Error.WriteLine(string.Format(CultureInfo.InvariantCulture, "loading_time {0,0:0.##}", loading_time.TotalSeconds));
    }