Example #1
0
        public void Run()
        {
            TransactionDatabase.CreateUniqueItemsList();
            SupportedTransactionsList   = new List <Transaction>();
            UnSupportedTransactionsList = new List <Transaction>();
            var transactionList = TransactionDatabase.UniqueItems.Items.Select(transactionDatabaseUniqueItem => new Transaction(transactionDatabaseUniqueItem.ToString())).ToList();
            var uniqueItems     = new HashSet <Item>();

            for (var i = 0; i < TransactionDatabase.GetMaxTransactionLength(); i++)
            {
                UnSupportedTransactionsList = new List <Transaction>();
                uniqueItems.Clear();
                transactionList = CalculateSupportOfTransactionList(transactionList);
                foreach (var transaction in transactionList)
                {
                    if (transaction.Support >= MinimumSupport)
                    {
                        SupportedTransactionsList.Add(transaction);
                        foreach (var item in transaction.Items)
                        {
                            uniqueItems.Add(item);
                        }
                    }
                    else
                    {
                        UnSupportedTransactionsList?.Add(transaction);
                    }
                }
                var itemList = uniqueItems.ToList();
                transactionList = GenerateCandidates(itemList, i + 1);
            }
        }
Example #2
0
 public void GetTransactionsFromDatabase(TransactionDatabase transactionDatabase)
 {
     foreach (var transactionDatabaseTransaction in transactionDatabase.Transactions)
     {
         TransactionList.Add(transactionDatabaseTransaction);
     }
 }
Example #3
0
 public Apriori(TransactionDatabase transactionDatabase, double minimumSupport = 0.1, bool calculateSupport = true, bool calculateConfidence = false, bool calculateLift = false, bool calculateConviction = false)
 {
     TransactionDatabase = transactionDatabase;
     MinimumSupport      = minimumSupport;
     CalculateSupport    = calculateSupport;
     CalculateConfidence = calculateConfidence;
     CalculateLift       = calculateLift;
     CalculateConviction = calculateConviction;
 }
 public void AddTransactionsInTransactionDatabaseToList(TransactionDatabase transactionDatabase)
 {
     foreach (Transaction transaction in transactionDatabase.Transactions)
     {
         if (transaction.Contains(new Transaction(ItemList)))
         {
             Transactions.Add(transaction);
         }
     }
 }
Example #5
0
 public Eclat(TransactionDatabase transactionDatabase, double minimumSupport = 0.1, bool calculateSupport = true, bool calculateConfidence = false, bool calculateLift = false, bool calculateConviction = false)
 {
     TransactionDatabase        = transactionDatabase;
     MinimumSupport             = minimumSupport;
     MinimumRequiredTransaction = (int)(Math.Ceiling(transactionDatabase.Transactions.Count * MinimumSupport));
     CalculateSupport           = calculateSupport;
     CalculateConfidence        = calculateConfidence;
     CalculateLift         = calculateLift;
     CalculateConviction   = calculateConviction;
     ItemsTransactionLists = new List <ItemsTransactionList>();
 }
Example #6
0
        public string ToCSV()
        {
            string outputString = "";

            outputString += "Support,Item" + Environment.NewLine;
            foreach (Transaction transaction in SupportedTransactionsList)
            {
                outputString += $"{TransactionDatabase.GetSupportOfTransaction(transaction):0.00}," + transaction.ToString() + Environment.NewLine;
            }
            return(outputString);
        }
Example #7
0
 private List <Transaction> CalculateSupportOfTransactionList(List <Transaction> transactions)
 {
     if (transactions == null)
     {
         throw new ArgumentNullException(nameof(transactions));
     }
     foreach (var transaction in transactions)
     {
         transaction.Support = TransactionDatabase.GetSupportOfTransaction(transaction);
     }
     return(transactions);
 }
Example #8
0
        public string ToCSV()
        {
            string outputString = "";

            outputString += "Support,Item" + Environment.NewLine;
            foreach (ItemsTransactionList itemsTransactionList in ItemsTransactionLists)
            {
                Transaction transaction = new Transaction();
                foreach (Item item in itemsTransactionList.ItemList.Items)
                {
                    transaction.Items.Add(item);
                }
                outputString += $"{TransactionDatabase.GetSupportOfTransaction(transaction):0.00}," + transaction.ToString() + Environment.NewLine;
            }
            return(outputString);
        }
Example #9
0
        public void Run()
        {
            TransactionDatabase.CreateUniqueItemsList();
            SupportedTransactionsList   = new HashSet <Transaction>();
            UnSupportedTransactionsList = new HashSet <Transaction>();
            List <ItemsTransactionList> uniqueItemsTransactionLists     = new List <ItemsTransactionList>();
            List <ItemsTransactionList> tempUniqueItemsTransactionLists = new List <ItemsTransactionList>();

            foreach (Item uniqueItem in TransactionDatabase.UniqueItems.Items)
            {
                ItemsTransactionList itemsTransactionList = new ItemsTransactionList();
                itemsTransactionList.ItemList = new ItemList();
                itemsTransactionList.ItemList.Items.Add(uniqueItem);
                itemsTransactionList.AddTransactionsToList(GetTransactionsContainsItemList(itemsTransactionList.ItemList));
                if (TransactionDatabase.GetSupportOfTransaction(new Transaction(uniqueItem)) >= MinimumSupport)
                {
                    ItemsTransactionLists.Add(itemsTransactionList);
                    uniqueItemsTransactionLists.Add(itemsTransactionList);
                    var transaction = new Transaction(uniqueItem);
                    if (CalculateSupport)
                    {
                        transaction.Support = TransactionDatabase.GetSupportOfTransaction(transaction);
                    }
                    SupportedTransactionsList.Add(transaction);
                }
            }

            int                maxItemCount          = 1;
            HashSet <Item>     temporaryItems        = new HashSet <Item>();
            List <Transaction> temporaryTransactions = new List <Transaction>();

            while (true)
            {
                temporaryItems.Clear();
                temporaryTransactions.Clear();
                tempUniqueItemsTransactionLists.Clear();
                List <ItemsTransactionList> tmpItemsTransactionLists = new List <ItemsTransactionList>();

                foreach (ItemsTransactionList itemsTransactionList in ItemsTransactionLists)
                {
                    if (itemsTransactionList.ItemList.Items.Count == maxItemCount)
                    {
                        tmpItemsTransactionLists.Add(itemsTransactionList);
                    }
                }
                foreach (ItemsTransactionList tmpItemsTransactionList in tmpItemsTransactionLists)
                {
                    foreach (Item item in tmpItemsTransactionList.ItemList.Items)
                    {
                        temporaryItems.Add(item);
                    }
                }

                foreach (ItemsTransactionList itemsTransactionList in uniqueItemsTransactionLists)
                {
                    foreach (Item temporaryItem in temporaryItems)
                    {
                        if (itemsTransactionList.ItemList.Items.First() == temporaryItem)
                        {
                            tempUniqueItemsTransactionLists.Add(itemsTransactionList);
                        }
                    }
                }

                List <ItemsTransactionList> candidateTransactions = GenerateCandidates(tempUniqueItemsTransactionLists.ToList(), maxItemCount);
                if (candidateTransactions.Count == 0)
                {
                    break;
                }
                foreach (ItemsTransactionList tmpItemsTransactionList in candidateTransactions)
                {
                    ItemsTransactionLists.Add(tmpItemsTransactionList);
                    var transaction = new Transaction(tmpItemsTransactionList.ItemList);
                    if (CalculateSupport)
                    {
                        transaction.Support = TransactionDatabase.GetSupportOfTransaction(transaction);
                    }
                    SupportedTransactionsList.Add(transaction);
                }
                maxItemCount++;
            }
        }