public static createNurseryExample ( double &inputs, int &outputs, int first ) : Accord.MachineLearning.DecisionTrees.DecisionTree | ||
inputs | double | |
outputs | int | |
first | int | |
리턴 | Accord.MachineLearning.DecisionTrees.DecisionTree |
public static DecisionTree createNurseryExample(out double[][] inputs, out int[] outputs, int first)
{
string nurseryData = Resources.nursery;
string[] inputColumns =
{
"parents", "has_nurs", "form", "children",
"housing", "finance", "social", "health"
};
string outputColumn = "output";
DataTable table = new DataTable("Nursery");
table.Columns.Add(inputColumns);
table.Columns.Add(outputColumn);
string[] lines = nurseryData.Split(
new[] { Environment.NewLine }, StringSplitOptions.None);
foreach (var line in lines)
table.Rows.Add(line.Split(','));
Codification codebook = new Codification(table);
DataTable symbols = codebook.Apply(table);
inputs = symbols.ToArray(inputColumns);
outputs = symbols.ToArray<int>(outputColumn);
var attributes = DecisionVariable.FromCodebook(codebook, inputColumns);
var tree = new DecisionTree(attributes, classes: 5);
C45Learning c45 = new C45Learning(tree);
double error = c45.Run(inputs.First(first), outputs.First(first));
Assert.AreEqual(0, error);
return tree;
}
}
public void RunTest3() { Accord.Math.Random.Generator.Seed = 0; double[][] inputs; int[] outputs; int training = 6000; DecisionTree tree = ReducedErrorPruningTest.createNurseryExample(out inputs, out outputs, training); double[] actual = new double[10]; for (int i = 0; i < actual.Length; i++) { int nodeCount2; repeat(inputs, outputs, tree, training, i * 0.1, out nodeCount2); actual[i] = nodeCount2; } double[] expected = { 447, 424, 410, 402, 376, 362, 354, 348, 336, 322 }; for (int i = 0; i < actual.Length; i++) { Assert.AreEqual(expected[i], actual[i]); } }