ID3Learner LoadDecisionTree(List <Record> trainingSet, ReferenceTable table, int depth) { int[][] inputs; int[] outputs; var codebook = BuildCodebook(trainingSet, table, out inputs, out outputs); var attributes = new DecisionVariable[table.Columns.Length - 1]; for (int i = 0; i < attributes.Length; i++) { attributes[i] = new DecisionVariable(table.Columns[i], table.GetValues(i).Length); } int classCount = 2; DecisionTree tree = new DecisionTree(attributes, classCount); ID3LearningEx id3Learning = new ID3LearningEx(tree) { MaxHeight = depth }; id3Learning.Run(inputs, outputs); return(new ID3Learner(this, tree, codebook, table.Columns.Last())); }
public List <Record> DiscretizeDataset(List <Record> dataset, ReferenceTable table) { int[] row = { 0 }; Discretize(table.HasUnknowns(row[0]), rec => double.Parse(rec[row[0]]), (rec, val) => rec[row[0]] = val, table.GetRanges(row[0]), table.GetValues(row[0]), dataset); row[0]++; Discretize(table.HasUnknowns(row[0]), rec => double.Parse(rec[row[0]]), (rec, val) => rec[row[0]] = val, table.GetRanges(row[0]), table.GetValues(row[0]), dataset); row[0]++; Discretize(table.HasUnknowns(row[0]), rec => double.Parse(rec[row[0]]), (rec, val) => rec[row[0]] = val, table.GetRanges(row[0]), table.GetValues(row[0]), dataset); row[0]++; Discretize(table.HasUnknowns(row[0]), rec => double.Parse(rec[row[0]]), (rec, val) => rec[row[0]] = val, table.GetRanges(row[0]), table.GetValues(row[0]), dataset); row[0]++; Discretize(table.HasUnknowns(row[0]), rec => double.Parse(rec[row[0]]), (rec, val) => rec[row[0]] = val, table.GetRanges(row[0]), table.GetValues(row[0]), dataset); row[0]++; Discretize(table.HasUnknowns(row[0]), rec => double.Parse(rec[row[0]]), (rec, val) => rec[row[0]] = val, table.GetRanges(row[0]), table.GetValues(row[0]), dataset); row[0]++; Discretize(table.HasUnknowns(row[0]), rec => double.Parse(rec[row[0]]), (rec, val) => rec[row[0]] = val, table.GetRanges(row[0]), table.GetValues(row[0]), dataset); row[0]++; Discretize(table.HasUnknowns(row[0]), rec => double.Parse(rec[row[0]]), (rec, val) => rec[row[0]] = val, table.GetRanges(row[0]), table.GetValues(row[0]), dataset); row[0]++; return(dataset); }