Exemple #1
0
        private List <Rule> CreateRulesForNotQualitativeArguments(Data[] elements, int indexOfArgument)
        {
            List <Rule> rules = new List <Rule>();

            double[] valuesOfArgument = SortValuesOfArgument(elements, indexOfArgument);
            for (int j = 0; j < valuesOfArgument.Length; j++)
            {
                Rule temp = new Rule();
                temp.IndexOfArgument = indexOfArgument;
                temp.IsQualitative   = false;
                if (j + 1 < valuesOfArgument.Length)
                {
                    temp.Rules.Add(CreateValueForRule(valuesOfArgument, j));
                }
                else
                {
                    temp.Rules.Add(valuesOfArgument[j]);
                }
                Data[] left = null, right = null;
                GeneralMethods.DivideSampleByNotQualitiveRule(out left, out right, elements, temp.Rules[0], indexOfArgument);
                temp.Error  = GeneralMethods.CountError(left);
                temp.Error += GeneralMethods.CountError(right);
                rules.Add(temp);
            }
            return(rules);
        }
Exemple #2
0
 private void CountErrorInQualitativeRules(List <Rule> rules, Data[] elements)
 {
     for (int i = 0; i < rules.Count; i++)
     {
         Data[] left = null, right = null;
         GeneralMethods.DivideSampleByQualitiveRule(out left, out right, elements,
                                                    rules[i].Rules, rules[i].IndexOfArgument);
         rules[i].Error  = GeneralMethods.CountError(left);
         rules[i].Error += GeneralMethods.CountError(right);
     }
 }
Exemple #3
0
        private void Learn()
        {
            //build the tree using CART algorithm
            Queue <DecisionTreeNode> qe = new Queue <DecisionTreeNode>();

            qe.Enqueue(Head);
            while (GeneralMethods.FindErrorSum(this) > 0)
            {
                DecisionTreeNode tempNode = new DecisionTreeNode();
                tempNode = qe.Dequeue();
                if (GeneralMethods.CountError(tempNode.Elements) != 0)
                {
                    tempNode.Rule = new Rule(tempNode.Elements);
                    AddChildren(tempNode);
                    qe.Enqueue(tempNode.LeftChild);
                    qe.Enqueue(tempNode.RightChild);
                }
            }
            TreeError = GeneralMethods.FindErrorSum(this);
        }
Exemple #4
0
        public static double FindErrorInNode(Data[] elements, int allElements)
        {
            double error = GeneralMethods.CountError(elements) * elements.Length;

            return(error / allElements);
        }