public FPNode AddNode(string name) { var node = new FPNode(name, this); leafs.Add(node); return(node); }
public FPNode(string name, FPNode parent) { leafs = new List <FPNode>(); this.Parent = parent; Name = name; Count = 1; }
public FPNode AddNode(string name) { var node = new FPNode(name); rootNode.leafs.Add(node); return(node); }
public void MinePatterns(FPNode node, string target, double minSupport, List <ItemSet> freqByKey) { if (node.Name.Equals(target)) { var fis = new ItemSet((node.BuildPath() + target).Split(','), node.Count); freqByKey.Add(fis); string key = string.Join(",", fis.Items); } for (int i = 0; i < node.leafs.Count; ++i) { MinePatterns(node.leafs[i], target, minSupport, freqByKey); } }
public string BuildPath() { StringBuilder sb = new StringBuilder(""); FPNode x = this; while (x.Parent != null) { sb.Append(x.Parent.Name).Append(","); x = x.Parent; } if (sb.Length > 0) { sb = sb.Remove(sb.Length - 1, 1); var arr = sb.ToString().Split(','); Array.Reverse(arr); return(string.Join(",", arr) + ","); } return(sb.ToString()); }
public FPTree GenerateTree(bool isSubTree) { DateTime start = DateTime.Now; List <string> domain = Transaction.ExtractDomain(dataSet); Supports = GetInitialSupports(domain, minSupport); foreach (Transaction transaction in dataSet) { int count = 0; var orderedTransaction = transaction.items.OrderBy(i => Supports.Keys.ToList().IndexOf(i)).ToList(); if (orderedTransaction.Count > 0) { string item = orderedTransaction.ElementAt(0); while (!Supports.ContainsKey(item)) { orderedTransaction.RemoveAt(0); if (orderedTransaction.Count > 0) { item = orderedTransaction.ElementAt(0); } else { break; } } FPNode node = null; while (count < orderedTransaction.Count) { item = orderedTransaction.ElementAt(count); if (count == 0) { if (tree.ContainsNode(item)) { node = tree.GetNode(item); node.Count++; //Console.WriteLine("Incremented node {0} to count {1}", node.Name,node.Count); } else { node = tree.AddNode(item); //Console.WriteLine("Attached node {0} to root", node.Name); } } else { if (node.ContainsNode(item)) { node = node.GetNode(item); node.Count++; //Console.WriteLine("Incremented node {0} to count {1}", node.Name, node.Count); } else { var old = node; node = node.AddNode(item); //Console.WriteLine("Attached node {0} to {1}", node.Name,old.Name); } } count++; } } } DateTime end = DateTime.Now; if (!isSubTree) { Console.WriteLine("Generated main tree in {0} seconds", (end - start).TotalSeconds); } return(tree); }
public FPTree() { rootNode = new FPNode(""); }