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)); } }
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); } }
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; }
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; }
private TransactionDatabase getTransactionDatabase() { if (null == _tDb) { _tDb = new TransactionDatabase(getStorage(), getLogger()); } return(_tDb); }
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(); }
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(); }
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; }
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; }
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; }
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"); }
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"); }
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; }
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"); }
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; }
/** * 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); }
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"); }
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"); }
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"); }
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"); }
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"); }
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"); }
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")); }
public void Did_TransactionDatabase_TransactionList_Created_with_Default_Constructor() { var transactions = new TransactionDatabase(); Assert.IsNotNull(transactions.Transactions, "transactions.Transactions != null"); }
private static TransactionDatabase getTransactionDatabase () { if (null == _tDb) { _tDb = new TransactionDatabase(getStorage(), getLogger()); } return _tDb; }
public void Did_TransactionDatabase_Loaded_From_Comma_Seperated_File() { var transactions = new TransactionDatabase(@"\\sample.txt"); Assert.IsNotNull(transactions.Transactions, "transactions.Transactions != null"); }