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); }
private void AddChildren(DecisionTreeNode node) //add new nodes to the tree { Data[] left = null, right = null; if (node.Rule.IsQualitative) { GeneralMethods.DivideSampleByQualitiveRule(out left, out right, node.Elements, node.Rule.Rules, node.Rule.IndexOfArgument); } else { GeneralMethods.DivideSampleByNotQualitiveRule(out left, out right, node.Elements, node.Rule.Rules[0], node.Rule.IndexOfArgument); } node.LeftChild = new DecisionTreeNode(left, true); node.RightChild = new DecisionTreeNode(right, false); }