private void LearnDecissionTree()
        {
            var modifiedList   = new Attributes(_learnMessages);
            var frequenceTable = new FrequenceTable(modifiedList.Entries);

            frequenceTable.CreateFrequenceTables();
            DecissionTree = new CalculateDecissionTree(frequenceTable, _porpertyList);
        }
 public CalculateDecissionTree(FrequenceTable table, List <Properties> properties)
 {
     this.FrequenceTable = table;
     this.ActualMessages = table.Messages;
     SetHamAndSpamCount();
     MessagesCount = HamCount + SpamCount;
     SetAvailableAttributes(properties);
     Controller();
 }
 private CalculateDecissionTree(FrequenceTable table, int spamCount, int hamCount, List <Properties> properties)
 {
     this.FrequenceTable = table;
     this.MessagesCount  = hamCount + spamCount;
     this.ActualMessages = table.Messages;
     this.HamCount       = hamCount;
     this.SpamCount      = spamCount;
     SetAvailableAttributes(properties);
     Controller();
 }
        private void NextNodeController()
        {
            SetParameterForNextNode();
            //Ermittelt alle Attribute von den Nachrichten welche übergeben werden.
            var modifiedListFalse = new Attributes(NewMessagesFalse);
            var modifiedListTrue  = new Attributes(NewMessagesTrue);

            modifiedListTrue.SetAttributeToMessage();
            modifiedListFalse.SetAttributeToMessage();
            //Erstellt eine FrequenceTable von allen Nachrichten welche übergeben werden. Aufgeteilt in sämtlich Attribute.
            NewFrequenceTableFalse = new FrequenceTable(modifiedListFalse.Entries);
            NewFrequenceTableFalse.CreateFrequenceTables();
            NewFrequenceTableTrue = new FrequenceTable(modifiedListTrue.Entries);
            NewFrequenceTableTrue.CreateFrequenceTables();
            //Wenn Knoten weiter mit false geht, darf kein Element mehr übergeben werden welches dieses Attribute nicht besitzt
            //Daher wir bei false die Werte von True übergeben und bei True die Werte von False!!!
            //Der Rekursive Aufruf erfolgt hier!!
            NewNodeFalse =
                new CalculateDecissionTree(NewFrequenceTableTrue, NewSpamCountTrue, NewHamCountTrue,
                                           _availableProperties);
            NewNodeTrue =
                new CalculateDecissionTree(NewFrequenceTableFalse, NewSpamCountFalse, NewHamCountFalse,
                                           _availableProperties);
        }