public DecisionTreeService( DataTable data, IDictionary <string, string[]> metaInfo, ILogger logger) { _logger = logger; _codebook = new Codebook(data, metaInfo); var vars = ParseMetaInfo(metaInfo); var inputInfo = vars.Take(vars.Length - 1).ToArray(); var outputInfo = vars.Last(); _treeInfo = new TreeInfo() { Inputs = inputInfo.Select(x => x.Name).ToArray(), Output = outputInfo.Name }; var inputs = _codebook.GetArray(_treeInfo.Inputs); var outputs = _codebook.GetArray(_treeInfo.Output); _treeBuilder = new Id3Algorithm(inputInfo, outputInfo); _tree = _treeBuilder.Learn(inputs, outputs); }
public Id3Algorithm(DecisionVariable[] inputs, DecisionVariable outputType) { _tree = new Models.DecisionTree(inputs, outputType); _numberOfOuputRange = _tree.NumberOfOuputClasses; _numberOfInputsRange = _tree.Attributes.Select(x => x.RangeLength).ToArray(); }