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);
        }
Esempio n. 10
0
        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();
        }
Esempio n. 11
0
        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);
        }