public static ConfusionMatrix[] GetConfusionMatrixes(Model.Hierarchical.IHierarchicalClassifier classifier, List <Data.Dataset> testingSets) { DataMining.Model.Hierarchical.LocalClassifier localClassifier = classifier as DataMining.Model.Hierarchical.LocalClassifier; ConfusionMatrix[] list = new ConfusionMatrix[testingSets[0].Metadata.Target.Values.Length]; for (int exmapleIndex = 0; exmapleIndex < testingSets[0].Size; exmapleIndex++) { List <Data.Example> examples = new List <Data.Example>(); foreach (Data.Dataset testset in testingSets) { examples.Add(testset[exmapleIndex]); } int[] predicted = localClassifier.Classify(examples); int[] actual = testingSets[0][exmapleIndex].HierarchicalLabel; for (int classIndex = 0; classIndex < list.Length; classIndex++) { if (predicted.Contains(classIndex)) { if (actual.Contains(classIndex)) { list[classIndex].TP++; } else { list[classIndex].FP++; } } else { if (actual.Contains(classIndex)) { list[classIndex].FN++; } else { list[classIndex].TN++; } } } } return(list); }
public static ConfusionMatrix[] GetConfusionMatrixes(Model.Hierarchical.IHierarchicalClassifier classifier, Data.Dataset testset) { ConfusionMatrix[] list = new ConfusionMatrix[testset.Metadata.Target.Values.Length]; foreach (Data.Example example in testset) { int[] predicted = classifier.Classify(example); int[] actual = example.HierarchicalLabel; for (int classIndex = 0; classIndex < list.Length; classIndex++) { if (predicted.Contains(classIndex)) { if (actual.Contains(classIndex)) { list[classIndex].TP++; } else { list[classIndex].FP++; } } else { if (actual.Contains(classIndex)) { list[classIndex].FN++; } else { list[classIndex].TN++; } } } } return(list); }