public static AffiliateReaderBase GetAppropriateReader(AffiliateFile file) { AffiliateReaderBase reader; switch (file.Name) { case "Bol": reader = new BolReader(); break; case "Affilinet": reader = new AffilinetReader(); break; case "Belboon": reader = new BelboonReader(); break; case "CommissionJunction": reader = new CommissionJunctionReader(); break; case "Daisycon": reader = new DaisyconReader(); break; case "TradeDoubler": reader = new TradeDoublerReader(); break; case "TradeTracker": reader = new TradeTrackerReader(); break; case "Webgains": reader = new WebgainsReader(); break; case "Zanox": reader = new ZanoxReader(); break; case "BorderBot": reader = new BorderBotReader(); break; case "Wehkamp": reader = new WehkampReader(); break; case "AffiliateWindow": reader = new AffiliateWindowReader(); break; case "Effiliation": reader = new EffiliationLecteur(); break; case "LDLC": reader = new LDLCReader(); break; case "Linkshare": reader = new LinkshareReader(); break; case "Rene\'s Toppertjes": reader = new RenesToppertjesReader(); break; case "JacobElektronik": reader = new JacobElektronikReader(); break; case "PepperjamNetwork": reader = new PepperjamNetworkReader(); break; case "Amazon": reader = new AmazonReader(); break; default: reader = null; break; } return reader; }
public void TestNmfClusting() { var reader = new AmazonReader(Paths.AmazonBooksRatings); var dataset = new Dataset <ItemRating>(reader); var clusterer = new Clusterer(dataset); clusterer.ClusterNmf(5, Paths.AmazonBooksUsersCluster); }
public void CreateClustersAmazon() { var reader = new AmazonReader(Paths.AmazonMusicRatings); var dataset = new Dataset <ItemRating>(reader); var clusterer = new Clusterer(dataset); for (int i = 14; i < 15; i += 2) { clusterer.WriteUsersCluster(Paths.AmazonMusicUsersCluster + i + ".csv", i, 5); clusterer.WriteItemsCluster(Paths.AmazonMusicItemsCluster + i + ".csv", i, 5); } }
public void CreateClustersAmazon() { var reader = new AmazonReader(Paths.AmazonMusicRatings); var dataset = new Dataset<ItemRating>(reader); var clusterer = new Clusterer(dataset); for (int i = 14; i < 15; i += 2) { clusterer.WriteUsersCluster(Paths.AmazonMusicUsersCluster + i + ".csv", i, 5); clusterer.WriteItemsCluster(Paths.AmazonMusicItemsCluster + i + ".csv", i, 5); } }
public void TestAmazonWithClusters() { // Todo: instead of loading the dataset every time add a updateCluster method to the Dataset<ItemRatingWithCluster> List <string> rmses = new List <string>(); List <string> maes = new List <string>(); for (int i = 2; i < 13; i += 2) { string usersClusterFile = Paths.AmazonMusicUsersCluster + i + ".csv"; string itemsClusterFile = Paths.AmazonMusicItemsCluster + i + ".csv"; AmazonReader trainReader, testReader; if (i == 0) { trainReader = new AmazonReader(Paths.AmazonMusicTrain75); testReader = new AmazonReader(Paths.AmazonMusicTest25); } else { trainReader = new AmazonReader(Paths.AmazonMusicTrain75, usersClusterFile, itemsClusterFile, "b", true); testReader = new AmazonReader(Paths.AmazonMusicTest25, usersClusterFile, itemsClusterFile, "b", true); } var dataset = new Dataset <ItemRatingWithClusters>(trainReader, testReader); var recommender = new LibFmTrainTester(i.ToString()); var context = new EvalutationContext <ItemRating>(recommender, dataset); var ep = new EvaluationPipeline <ItemRating>(context); ep.Evaluators.Add(new RMSE()); ep.Evaluators.Add(new MAE()); ep.Run(); rmses.Add(context["RMSE"].ToString()); maes.Add(context["MAE"].ToString()); } Console.WriteLine("RMSEs--------------"); rmses.ForEach(Console.WriteLine); Console.WriteLine("MAEs-------------"); maes.ForEach(Console.WriteLine); }
public void TestAmazonWithNmfCluster() { var trainReader = new AmazonReader(Paths.AmazonBooksTrain75, Paths.AmazonBooksUsersCluster + ".nmf.u", Paths.AmazonBooksUsersCluster + ".nmf.i"); var testReader = new AmazonReader(Paths.AmazonBooksTest25, Paths.AmazonBooksUsersCluster + ".nmf.u", Paths.AmazonBooksUsersCluster + ".nmf.i"); var dataset = new Dataset <ItemRatingWithClusters>(trainReader, testReader); var recommender = new LibFmTrainTester(); var context = new EvalutationContext <ItemRating>(recommender, dataset); var ep = new EvaluationPipeline <ItemRating>(context); ep.Evaluators.Add(new RMSE()); ep.Evaluators.Add(new MAE()); ep.Run(); }
public void CreateNmfClustersAmazon() { var reader = new AmazonReader(Paths.AmazonBooksRatings); var dataset = new Dataset <ItemRating>(reader); var userMapping = new Mapping(); var itemMapping = new Mapping(); var data = dataset.AllSamples.Select(ir => new { UserId = userMapping.ToInternalID(ir.User.Id), ItemId = itemMapping.ToInternalID(ir.Item.Id), Rating = Convert.ToDouble(ir.Rating) }).ToList(); // users int i = 0; var uOut = File.ReadAllLines(Paths.AmazonBooksUsersCluster + ".lf").Select(l => { var values = l.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries) .Select(v => Convert.ToDouble(v)).ToList(); var maxIndex = values.IndexOf(values.Max()); return(new { UserId = userMapping.ToOriginalID(i++), ClusterId = maxIndex }); }).Select(uc => string.Format("{0},{1}", uc.UserId, uc.ClusterId)); File.WriteAllLines(Paths.AmazonBooksUsersCluster + ".nmf.u", uOut); // items int j = 0; var iOut = File.ReadAllLines(Paths.AmazonBooksUsersCluster + ".rf").Select(l => { var values = l.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries) .Select(v => Convert.ToDouble(v)).ToList(); var maxIndex = values.IndexOf(values.Max()); return(new { ItemId = itemMapping.ToOriginalID(j++), ClusterId = maxIndex }); }).Select(ic => string.Format("{0},{1}", ic.ItemId, ic.ClusterId)); File.WriteAllLines(Paths.AmazonBooksUsersCluster + ".nmf.i", iOut); }
public void CreateNmfClustersAmazon() { var reader = new AmazonReader(Paths.AmazonBooksRatings); var dataset = new Dataset<ItemRating>(reader); var userMapping = new Mapping(); var itemMapping = new Mapping(); var data = dataset.AllSamples.Select(ir => new { UserId = userMapping.ToInternalID(ir.User.Id), ItemId = itemMapping.ToInternalID(ir.Item.Id), Rating = Convert.ToDouble(ir.Rating) }).ToList(); // users int i = 0; var uOut = File.ReadAllLines(Paths.AmazonBooksUsersCluster + ".lf").Select(l => { var values = l.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries) .Select(v => Convert.ToDouble(v)).ToList(); var maxIndex = values.IndexOf(values.Max()); return new { UserId = userMapping.ToOriginalID(i++), ClusterId = maxIndex }; }).Select(uc => string.Format("{0},{1}", uc.UserId, uc.ClusterId)); File.WriteAllLines(Paths.AmazonBooksUsersCluster + ".nmf.u", uOut); // items int j = 0; var iOut = File.ReadAllLines(Paths.AmazonBooksUsersCluster + ".rf").Select(l => { var values = l.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries) .Select(v => Convert.ToDouble(v)).ToList(); var maxIndex = values.IndexOf(values.Max()); return new { ItemId = itemMapping.ToOriginalID(j++), ClusterId = maxIndex }; }).Select(ic => string.Format("{0},{1}", ic.ItemId, ic.ClusterId)); File.WriteAllLines(Paths.AmazonBooksUsersCluster + ".nmf.i", iOut); }
public void TestNmfClusting() { var reader = new AmazonReader(Paths.AmazonBooksRatings); var dataset = new Dataset<ItemRating>(reader); var clusterer = new Clusterer(dataset); clusterer.ClusterNmf(5, Paths.AmazonBooksUsersCluster); }
public void TestAmazonWithNmfCluster() { var trainReader = new AmazonReader(Paths.AmazonBooksTrain75, Paths.AmazonBooksUsersCluster + ".nmf.u", Paths.AmazonBooksUsersCluster + ".nmf.i"); var testReader = new AmazonReader(Paths.AmazonBooksTest25, Paths.AmazonBooksUsersCluster + ".nmf.u", Paths.AmazonBooksUsersCluster + ".nmf.i"); var dataset = new Dataset<ItemRatingWithClusters>(trainReader, testReader); var recommender = new LibFmTrainTester(); var context = new EvalutationContext<ItemRating>(recommender, dataset); var ep = new EvaluationPipeline<ItemRating>(context); ep.Evaluators.Add(new RMSE()); ep.Evaluators.Add(new MAE()); ep.Run(); }
public void TestAmazonWithClusters() { // Todo: instead of loading the dataset every time add a updateCluster method to the Dataset<ItemRatingWithCluster> List<string> rmses = new List<string>(); List<string> maes = new List<string>(); for (int i = 2; i < 13; i += 2) { string usersClusterFile = Paths.AmazonMusicUsersCluster + i + ".csv"; string itemsClusterFile = Paths.AmazonMusicItemsCluster + i + ".csv"; AmazonReader trainReader, testReader; if (i == 0) { trainReader = new AmazonReader(Paths.AmazonMusicTrain75); testReader = new AmazonReader(Paths.AmazonMusicTest25); } else { trainReader = new AmazonReader(Paths.AmazonMusicTrain75, usersClusterFile, itemsClusterFile, "b", true); testReader = new AmazonReader(Paths.AmazonMusicTest25, usersClusterFile, itemsClusterFile, "b", true); } var dataset = new Dataset<ItemRatingWithClusters>(trainReader, testReader); var recommender = new LibFmTrainTester(i.ToString()); var context = new EvalutationContext<ItemRating>(recommender, dataset); var ep = new EvaluationPipeline<ItemRating>(context); ep.Evaluators.Add(new RMSE()); ep.Evaluators.Add(new MAE()); ep.Run(); rmses.Add(context["RMSE"].ToString()); maes.Add(context["MAE"].ToString()); } Console.WriteLine("RMSEs--------------"); rmses.ForEach(Console.WriteLine); Console.WriteLine("MAEs-------------"); maes.ForEach(Console.WriteLine); }