예제 #1
0
        public void TestMethodAlgorithms()
        {
            List <double> supports     = new List <double>(new double[] { 0.001, 0.002, 0.003, 0.004, 0.005, 0.01, 0.02, 0.03, 0.04, 0.05, 0.1, 0.2 });
            string        stringResult = "";

            foreach (double support in supports)
            {
                var start        = DateTime.Now;
                var transactions = new TransactionDatabase(@"\\small.txt");
                var apriori      = new Apriori(transactions, 0.2);
                apriori.Run();
                var end    = DateTime.Now;
                var result = end - start;
                stringResult += $"APRIORI Support:{support} Total Time (ms): {result.TotalMilliseconds}" + Environment.NewLine;
            }
            foreach (double support in supports)
            {
                var start        = DateTime.Now;
                var transactions = new TransactionDatabase(@"\\small.txt");
                var eclat        = new Eclat(transactions, 0.2);
                eclat.Run();
                var end    = DateTime.Now;
                var result = end - start;
                stringResult += $"ECLAT Support:{support} Total Time (ms): {result.TotalMilliseconds}" + Environment.NewLine;
                System.IO.File.WriteAllText(@"PerformanceResultsAuto.csv", stringResult);
            }
        }
 public async Task <IList <Transaction> > GetAccountTransactionsAsync(Account account)
 {
     using (var database = new TransactionDatabase())
     {
         return(await database.GetTransactionsByAccount(account));
     }
 }
 public async Task <bool> UpdateAsync(Transaction transaction)
 {
     using (var database = new TransactionDatabase())
     {
         return(await database.UpdateTransactionAsync(transaction));
     }
 }
 public async Task <IList <Transaction> > GetBusinessesTransactionsAsync(long userId)
 {
     using (var database = new TransactionDatabase())
     {
         return(await database.SearchBusinessTransactionByUserAsync(userId));
     }
 }
 public async Task <bool> UpdateAsync(Transaction transaction, Account fromAccount, Account toAccount)
 {
     using (var database = new TransactionDatabase())
     {
         return(await database.UpdateTransactionAsync(transaction, fromAccount, toAccount));
     }
 }
 public async Task <long> AddAsync(TransactionCandidate transation)
 {
     using (var database = new TransactionDatabase())
     {
         return(await database.InsertTransactionAsync(transation));
     }
 }
 public async Task <Transaction> GetAsync(long transactionId)
 {
     using (var database = new TransactionDatabase())
     {
         return(await database.GetTransactionAsync(transactionId));
     }
 }
예제 #8
0
        private void performanceTestToolStripMenuItem_Click(object sender, EventArgs e)
        {
            List <double> supports     = new List <double>(new double[] { 0.01, 0.02, 0.03, 0.04, 0.05, 0.1, 0.2, 0.3, 0.4, 0.5 });
            string        stringResult = "";
            string        readfile     = File.ReadAllText(comboBoxTestDataSet.Text);

            foreach (double support in supports)
            {
                var start        = DateTime.Now;
                var transactions = new TransactionDatabase(comboBoxTestDataSet.Text);
                var apriori      = new Apriori(transactions, support);
                apriori.Run();
                var end       = DateTime.Now;
                var result    = end - start;
                var resultMem = GC.GetTotalMemory(true);
                stringResult += $"APRIORI Support:{support} Total Time (ms): {result.TotalMilliseconds} Memory Usage (bytes): {resultMem}" + Environment.NewLine;
            }
            foreach (double support in supports)
            {
                var start        = DateTime.Now;
                var transactions = new TransactionDatabase(comboBoxTestDataSet.Text);
                var eclat        = new Eclat(transactions, support);
                eclat.Run();
                var end       = DateTime.Now;
                var result    = end - start;
                var resultMem = GC.GetTotalMemory(true);
                stringResult += $"ECLAT Support:{support} Total Time (ms): {result.TotalMilliseconds} Memory Usage (bytes): {resultMem}" + Environment.NewLine;
                System.IO.File.WriteAllText(@"PerformanceResults.txt", stringResult);
            }
        }
예제 #9
0
        public void Did_TransactionDatabase_CreateRandomTransactionDatabase_Populates_Correct_Amount_of_Element()
        {
            var transactions = new TransactionDatabase();

            transactions.CreateRandomTransactionDatabase(10);
            Assert.AreEqual(10, transactions.Transactions.Count, "CreateRandomTransactionDatabase populates incorrect amount of Transactions");
        }
 public AmazonAppStoreBillingService (IRawAmazonAppStoreBillingInterface amazon, ProductIdRemapper remapper, InventoryDatabase db, TransactionDatabase tDb, ILogger logger) {
     this.remapper = remapper;
     this.db = db;
     this.logger = logger;
     logger.prefix = "UnibillAmazonBillingService";
     this.amazon = amazon;
     this.tDb = tDb;
 }
예제 #11
0
 public AmazonAppStoreBillingService(IRawAmazonAppStoreBillingInterface amazon, ProductIdRemapper remapper, TransactionDatabase tDb, ILogger logger)
 {
     this.remapper = remapper;
     this.logger   = logger;
     logger.prefix = "UnibillAmazonBillingService";
     this.amazon   = amazon;
     this.tDb      = tDb;
 }
예제 #12
0
 private TransactionDatabase getTransactionDatabase()
 {
     if (null == _tDb)
     {
         _tDb = new TransactionDatabase(getStorage(), getLogger());
     }
     return(_tDb);
 }
예제 #13
0
        private void aprioriAlgorithmToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var transactions = new TransactionDatabase(comboBoxTestDataSet.Text);
            var apriori      = new Apriori(transactions, double.Parse(textBoxMinimumSupport.Text));

            apriori.Run();
            textBoxOutput.AppendText(apriori.ToString());
            csvString = apriori.ToCSV();
        }
예제 #14
0
        private void eCLATAlgorithmToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var transactions = new TransactionDatabase(comboBoxTestDataSet.Text);
            var eclat        = new Eclat(transactions, double.Parse(textBoxMinimumSupport.Text));

            eclat.Run();
            textBoxOutput.AppendText(eclat.ToString());
            csvString = eclat.ToCSV();
        }
예제 #15
0
파일: Biller.cs 프로젝트: nhhoang/shooting
 public Biller (InventoryDatabase db, TransactionDatabase tDb, IBillingService billingSubsystem, ILogger logger, HelpCentre help, ProductIdRemapper remapper) {
     this.InventoryDatabase = db;
     this.transactionDatabase = tDb;
     this.billingSubsystem = billingSubsystem;
     this.logger = logger;
     logger.prefix = "UnibillBiller";
     this.help = help;
     this.Errors = new List<UnibillError> ();
     this.remapper = remapper;
 }
 public Win8_1BillingService(IWindowsIAP win8,
                             ProductIdRemapper remapper,
                             TransactionDatabase tDb,
                             ILogger logger)
 {
     this.win8     = win8;
     this.tDb      = tDb;
     this.remapper = remapper;
     this.logger   = logger;
 }
예제 #17
0
 public WP8BillingService(IWindowsIAP wp8,
                          UnibillConfiguration config,
                          ProductIdRemapper remapper,
                          TransactionDatabase tDb,
                          ILogger logger) {
     this.wp8 = wp8;
     this.db = config;
     this.tDb = tDb;
     this.remapper = remapper;
     this.logger = logger;
 }
예제 #18
0
        public Biller (UnibillConfiguration config, TransactionDatabase tDb, IBillingService billingSubsystem, ILogger logger, HelpCentre help, ProductIdRemapper remapper, CurrencyManager currencyManager) {
            this.InventoryDatabase = config;
            this.transactionDatabase = tDb;
            this.billingSubsystem = billingSubsystem;
            this.logger = logger;
            logger.prefix = "UnibillBiller";
            this.help = help;
            this.Errors = new List<UnibillError> ();
            this.remapper = remapper;
			this.currencyManager = currencyManager;
        }
예제 #19
0
        public void Did_TransactionDatabase_GetMaxTransactionLength_Returns_Correct()
        {
            var transactions = new TransactionDatabase();

            transactions.AddTransaction(new Transaction("A,B,C,D"));
            transactions.AddTransaction(new Transaction("A,B,C,D,A"));
            transactions.AddTransaction(new Transaction("A,B"));
            transactions.AddTransaction(new Transaction("A,B,C"));

            Assert.AreEqual(5, transactions.GetMaxTransactionLength(), "GetMaxTransactionLength is not equals to 5");
        }
예제 #20
0
        public void Did_TransactionDatabase_CreateUniqueItemList_Populates_Correct()
        {
            var transactions = new TransactionDatabase();

            transactions.AddTransaction(new Transaction("A,B,C,D"));
            transactions.AddTransaction(new Transaction("A,B,C,A"));
            transactions.AddTransaction(new Transaction("A,B"));
            transactions.AddTransaction(new Transaction("A,B,C"));
            transactions.CreateUniqueItemsList();
            Assert.AreEqual(4, transactions.UniqueItems.Items.Count, "UniqueItemsList populates incorrectly");
        }
예제 #21
0
 public WP8BillingService(IWindowsIAP wp8,
                          UnibillConfiguration config,
                          ProductIdRemapper remapper,
                          TransactionDatabase tDb,
                          ILogger logger)
 {
     this.wp8      = wp8;
     this.db       = config;
     this.tDb      = tDb;
     this.remapper = remapper;
     this.logger   = logger;
 }
예제 #22
0
 public Biller(UnibillConfiguration config, TransactionDatabase tDb, IBillingService billingSubsystem, ILogger logger, HelpCentre help, ProductIdRemapper remapper, CurrencyManager currencyManager)
 {
     this.InventoryDatabase   = config;
     this.transactionDatabase = tDb;
     this.billingSubsystem    = billingSubsystem;
     this.logger          = logger;
     logger.prefix        = "UnibillBiller";
     this.help            = help;
     this.Errors          = new List <UnibillError> ();
     this.remapper        = remapper;
     this.currencyManager = currencyManager;
 }
예제 #23
0
        public void Did_TransactionDatabase_Support_Returns_Correct()
        {
            var transactions = new TransactionDatabase();

            transactions.AddTransaction(new Transaction("A,B,C,D"));
            transactions.AddTransaction(new Transaction("A,B,C,D,A"));
            transactions.AddTransaction(new Transaction("A,B"));
            transactions.AddTransaction(new Transaction("A,B,C"));
            var support = transactions.GetSupportOfTransaction(new Transaction("A,B,C"));

            Assert.AreEqual(0.75, support, "GetSupportOfTransaction is not equals to 0.75");
        }
예제 #24
0
 public WP8BillingService(IWindowsIAP wp8,
                          ProductIdRemapper remapper,
                          TransactionDatabase tDb,
                          IUtil util,
                          ILogger logger)
 {
     this.wp8      = wp8;
     this.tDb      = tDb;
     this.remapper = remapper;
     this.util     = util;
     this.logger   = logger;
 }
예제 #25
0
        /**
         * Remove items that at not frequent from the transaction database
         * @param database
         * @return a map indicating the tidset of each item (key: item  value: tidset)
         */
        private Dictionary <int, HashSet <int> > removeItemsThatAreNotFrequent(
            TransactionDatabase database)
        {
            // (1) count the support of each item in the database in one database
            // pass
            // Map with (key: item  value: tidset)
            mapItemTIDS = new Dictionary <int, HashSet <int> >();

            // for each transaction
            for (int j = 0; j < database.getTransactions().Count(); j++)
            {
                List <int> transaction = database.getTransactions().ElementAt(j);
                // for each item
                for (int i = 0; i < transaction.Count(); i++)
                {
                    // update the support count of the item
                    HashSet <int> ids = mapItemTIDS[transaction.ElementAt(i)];
                    if (ids == null)
                    {
                        ids = new HashSet <int>();
                        mapItemTIDS.Add(transaction.ElementAt(i), ids);
                    }
                    ids.Add(j);
                }
            }
            Console.Out.WriteLine("NUMBER OF DIFFERENT ITEMS : " + mapItemTIDS.Count());
            // (2) remove all items that are not frequent from the database

            // for each transaction
            for (int j = 0; j < database.getTransactions().Count(); j++)
            {
                List <int> transaction = database.getTransactions().ElementAt(j);

                // for each item in the transaction
                //Udkommenteret da det kan skrives smartere
                IEnumerator <int> iter = transaction.GetEnumerator();

                while (iter.MoveNext())
                {
                    int nextItem = iter.Current;
                    // if the item is not frequent
                    HashSet <int> ids = mapItemTIDS[nextItem];
                    if (ids.Count() < minSuppRelative)
                    {
                        // remove it!
                        iter.Dispose();
                    }
                }
            }
            return(mapItemTIDS);
        }
예제 #26
0
        public void Did_TransactionDatabase_Lift_Returns_Correct()
        {
            var transactions = new TransactionDatabase();

            transactions.AddTransaction(new Transaction("A,B,C,D"));
            transactions.AddTransaction(new Transaction("A,B,C,A"));
            transactions.AddTransaction(new Transaction("A,B"));
            transactions.AddTransaction(new Transaction("A,B,C"));
            var lift = transactions.GetLiftOfTransactions(new Transaction("A,B"), new Transaction("D"));

            Assert.AreEqual(1, lift, "GetLiftOfTransaction is not equals to 0.25");

            lift = transactions.GetLiftOfTransactions(new Transaction("A,B"), new Transaction("A,B"));
            Assert.AreEqual(1, lift, "GetLiftOfTransaction is not equals to 1");
        }
예제 #27
0
        public void Did_TransactionDatabase_Conviction_Returns_Correct()
        {
            var transactions = new TransactionDatabase();

            transactions.AddTransaction(new Transaction("A,B,C,D"));
            transactions.AddTransaction(new Transaction("A,B,C,A"));
            transactions.AddTransaction(new Transaction("A,B"));
            transactions.AddTransaction(new Transaction("A,B,C"));
            var conviction = transactions.GetConvictionOfTransactions(new Transaction("A,B"), new Transaction("D"));

            Assert.AreEqual(1, conviction, "GetConvictionOfTransactions is not equals to 1");

            conviction = transactions.GetConvictionOfTransactions(new Transaction("A,B"), new Transaction("A,B"));
            Assert.AreEqual(double.NaN, conviction, "GetConvictionOfTransactions is not equals to NaN");
        }
예제 #28
0
        public void Did_TransactionDatabase_Confidence_Returns_Correct()
        {
            var transactions = new TransactionDatabase();

            transactions.AddTransaction(new Transaction("A,B,C,D"));
            transactions.AddTransaction(new Transaction("A,B,C,A"));
            transactions.AddTransaction(new Transaction("A,B"));
            transactions.AddTransaction(new Transaction("A,B,C"));
            var support = transactions.GetConfidenceOfTransactions(new Transaction("A,B"), new Transaction("D"));

            Assert.AreEqual(0.25, support, "GetSupportOfTransaction is not equals to 0.25");

            support = transactions.GetConfidenceOfTransactions(new Transaction("A,B"), new Transaction("A,B"));
            Assert.AreEqual(1, support, "GetSupportOfTransaction is not equals to 1");
        }
        public void Did_ItemTransaction_Load_Transactions_From_Transaction_Database()
        {
            var transactions = new TransactionDatabase();

            transactions.AddTransaction(new Transaction("A,B,C,D"));
            transactions.AddTransaction(new Transaction("A,B,C,D,A"));
            transactions.AddTransaction(new Transaction("A,B"));
            transactions.AddTransaction(new Transaction("A,B,C"));


            var itemTransaction = new ItemTransactions();

            itemTransaction.GetTransactionsFromDatabase(transactions);

            Assert.AreEqual(4, itemTransaction.TransactionList.Count, "GetMaxTransactionLength is not equals to 4");
        }
예제 #30
0
        public void Eclat_Calcuates_Transactions_Support_Right()
        {
            var transactions = new TransactionDatabase();

            transactions.AddTransaction(new Transaction("A,B,C,D"));
            transactions.AddTransaction(new Transaction("A,B,C,A"));
            transactions.AddTransaction(new Transaction("A,B"));
            transactions.AddTransaction(new Transaction("A,B,C"));
            transactions.AddTransaction(new Transaction("D"));
            transactions.AddTransaction(new Transaction("E"));
            var eclat = new Eclat(transactions);

            eclat.Run();
            Assert.IsTrue(eclat.IsTransactionSupported(new Transaction("A,B")), "Apriori algorithm did not works right as new Transaction(\"A,B\") is not included in Supported Transactions List");
            Assert.IsFalse(eclat.IsTransactionSupported(new Transaction("D,E")), "Apriori algorithm did not works right as new Transaction(\"D,E\") is included in Supported Transactions List");
        }
예제 #31
0
        public void Eclat_Creation_Default_Constructor_Name()
        {
            var transactions = new TransactionDatabase();

            transactions.AddTransaction(new Transaction("A,B,C,D"));
            transactions.AddTransaction(new Transaction("A,B,C,A"));
            transactions.AddTransaction(new Transaction("A,B"));
            transactions.AddTransaction(new Transaction("A,B,C"));
            transactions.AddTransaction(new Transaction("D"));
            transactions.AddTransaction(new Transaction("E"));
            var eclat = new Eclat(transactions, 0.2);

            eclat.Run();
            Assert.AreEqual(8, eclat.TransactionCountWithSupport(), "Apriori Algorithm results wrong amount of transaction.");

            eclat = new Eclat(transactions);
            eclat.Run();
            Assert.AreEqual(16, eclat.TransactionCountWithSupport(), "Apriori Algorithm results wrong amount of transaction.");
            Assert.IsTrue(eclat.IsTransactionSupported(new Transaction("A,B")), "Apriori algorithm did not works right as new Transaction(\"A,B\") is not included in Supported Transactions List");
        }
예제 #32
0
        public void Did_ItemsTransactionList_Load_Transactions_From_Transaction_Database()
        {
            var transactions = new TransactionDatabase();

            transactions.AddTransaction(new Transaction("A,B,C,D"));
            transactions.AddTransaction(new Transaction("A,B,C,D,A"));
            transactions.AddTransaction(new Transaction("A,B"));
            transactions.AddTransaction(new Transaction("A,B,C"));
            var item1    = new Item("A");
            var item2    = new Item("B");
            var itemList = new ItemList();

            itemList.Items.Add(item1);
            itemList.Items.Add(item2);
            var itemsTransactionList = new ItemsTransactionList(itemList);

            itemsTransactionList.AddTransactionsInTransactionDatabaseToList(transactions);

            Assert.AreEqual(4, itemsTransactionList.Transactions.Count, "itemsTransactionList.Transactions.Count is not equals to 1");
        }
예제 #33
0
        public static void Main(string[] args)
        {
            Console.WriteLine(DateTime.Now.ToString("O"));
            string inputFile = null;
            string outputFile = null;
            int minSupPercent = 0;
            int minSupport = 0;

            if (args.Length != 3)
            {
                PrintUsage();
            }
            try
            {
                minSupPercent = Convert.ToInt32(args[0]);
                inputFile = String.Copy(args[1]);
                outputFile = String.Copy(args[2]);

                // If input file don't exist, throw exception.
                if (File.Exists(inputFile) == false)
                    throw new FileNotFoundException();

                // If output file already exists, the file will be deleted.
                if (File.Exists(outputFile) == true)
                    File.Delete(outputFile);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                PrintUsage();
            }

            TransactionDatabase database = new TransactionDatabase(inputFile, outputFile);
            ItemSetTable candidateTable = new ItemSetTable();
            ItemSetTable frequentTable = null;

            /* Printing input arguments.. */
            minSupport = minSupPercent * database.Count / 100;
            Console.WriteLine("minimum support: {0} %", minSupPercent);
            Console.WriteLine("minimum support: {0}", minSupport);
            ItemSetTable.SetMinSupport(minSupport);

            /* Build C(1), the candidate item sets with size 1 */
            candidateTable = database.FindFirstCandidateItemSetTable();

            /* Build L(1), the frequent item sets with size 1 */
            if (candidateTable != null)
                frequentTable = candidateTable.BuildFrequentItemSet();

            for (int k=1; frequentTable != null; ++k)
            {
                // C(k+1) = candidates generated from L(k)
                candidateTable = frequentTable.BuildCandidateItemSet();

                // for each transaction t in database do increment the count of
                // all candidates in C(k+1) that are contained in t
                database.IncrementCandidatesIn(candidateTable);

                // L(k+1) = candidates in C(K+1) with min_support
                frequentTable = candidateTable.BuildFrequentItemSet();
                if (frequentTable != null)
                {
                    foreach (ItemSet frequentItemSet in frequentTable.Keys)
                        database.FindAssociationRules(frequentItemSet);
                }
            }
            Console.WriteLine("Finding Association Rules is finished.");
            Console.WriteLine(DateTime.Now.ToString("O"));
        }
예제 #34
0
        public void Did_TransactionDatabase_TransactionList_Created_with_Default_Constructor()
        {
            var transactions = new TransactionDatabase();

            Assert.IsNotNull(transactions.Transactions, "transactions.Transactions != null");
        }
예제 #35
0
파일: Biller.cs 프로젝트: nhhoang/shooting
 private static TransactionDatabase getTransactionDatabase () {
     if (null == _tDb) {
         _tDb = new TransactionDatabase(getStorage(), getLogger());
     }
     return _tDb;
 }
예제 #36
0
        public void Did_TransactionDatabase_Loaded_From_Comma_Seperated_File()
        {
            var transactions = new TransactionDatabase(@"\\sample.txt");

            Assert.IsNotNull(transactions.Transactions, "transactions.Transactions != null");
        }