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); } }
public void GetTransactionsFromDatabase(TransactionDatabase transactionDatabase) { foreach (var transactionDatabaseTransaction in transactionDatabase.Transactions) { TransactionList.Add(transactionDatabaseTransaction); } }
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); } } }
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>(); }
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); }
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); }
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); }
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++; } }