private static ConfusionMatrixValidation TestClassificator(AbstractClassification classificator, bool printToStdout = false) { List <DataElement> dataSet = new List <DataElement>(); using (Database db = new Database()) { dataSet = db.GetElements(); } classificator.Learn(dataSet); ConfusionMatrixValidation validator = new ConfusionMatrixValidation(classificator, dataSet, crossValidationSets); if (printToStdout) { Console.WriteLine($"Accuracy rate: {validator.AccuracyRate}"); Console.WriteLine($"Correct: {validator.CorrectCount}"); Console.WriteLine($"Errors: {validator.ErrorCount}"); for (int i = 0; i < Enum.GetNames(typeof(SongGenre)).Length; i++) { SongGenre genre = (SongGenre)i; Console.WriteLine("------------"); Console.WriteLine(genre.ToString().ToUpper()); Console.WriteLine("------------"); Console.WriteLine($"ROC > True Positive rate: {validator.TPRate(genre)}"); Console.WriteLine($"ROC > False Positive rate: {validator.FPRate(genre)}"); Console.WriteLine($"True positive: {validator.TP(genre)}"); Console.WriteLine($"True negative: {validator.TN(genre)}"); Console.WriteLine($"False positive: {validator.FP(genre)}"); Console.WriteLine($"False negative: {validator.FN(genre)}"); } } return(validator); }
public ConfusionMatrixWindow(AbstractClassification classificator, List <DataElement> data, int crossValidationSetsCount) { InitializeComponent(); cvCount = crossValidationSetsCount; validator = new ConfusionMatrixValidation(classificator, data, cvCount); logger = new LabelLogger(infoLabel); SetConfusionMatrix(); genreInfoCombobox.SelectedIndex = 0; }
public ConfusionMatrixValidation(AbstractClassification classificator, List <DataElement> dataSet, int crossValidationSetsCount) { // start timer Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); _dataSet = dataSet; _classificator = classificator; cvCount = crossValidationSetsCount; crossValidator = new CrossValidation(dataSet, cvCount); _confusionMatrix = new List <DataElement> [cvCount, SongsCount, SongsCount]; ComputeMatrix(); // save measured time stopwatch.Stop(); ComputationTime = stopwatch.Elapsed.TotalMilliseconds.ToString(); }