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;
 }
示例#3
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();
        }