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); }
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); }
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)); }