public FPTree(Arff source, int minimumCoverage, int maximumItemSetSize, double minimumAccuracy, int resultSize) { //load input Source = source; MinimumCoverage = minimumCoverage; MaximumItemSetSize = maximumItemSetSize; MinimumAccuracy = minimumAccuracy; ResultSize = resultSize; //initiate Root Root = new FPTreeNode(); //local variables ItemSet ItemSet; ItemSet HighFrequencyOneItemSet; FPTreeTable FPTreeTable; //get the size 1 ItemSet ItemSet = new ItemSet(Source); //initiate High Frequency 1-item set HighFrequencyOneItemSet = ItemSet.DeepCopy(); HighFrequencyOneItemSet.MeetMinimumCoverage(MinimumCoverage); HighFrequencyOneItemSet.OrderByFrequencyDescending(); //initiate FPTreeTable FPTreeTable = new FPTreeTable(Source, HighFrequencyOneItemSet); //build FPTree BuildFPTreeFromRoot(FPTreeTable); }
private void BuildFPTreeFromRoot(FPTreeTable table) { //pick first items from the table var FirstItemsQuery = from record in table.Records group record.Items[0].Condition by record.Items[0].Condition.ToString() into g select g.ToList(); List<FPTreeTableRecordItem> FirstItems = new List<FPTreeTableRecordItem>(); foreach (var firstItem in FirstItemsQuery) { FirstItems.Add(new FPTreeTableRecordItem(firstItem[0], firstItem.Count())); } FirstItems = FirstItems.OrderByDescending(i => i.Frequency).ToList(); //put them into tree Root.AddChildren(FirstItems); }