private static void PrintClassificationMetrics(string name, MultiClassClassifierEvaluator.Result metrics)
 {
     Console.WriteLine($"*************************************************");
     Console.WriteLine($"*       Metrics for {name}          ");
     Console.WriteLine($"*------------------------------------------------");
     Console.WriteLine($"*       Accuracy Macro: {metrics.AccuracyMacro}");
     Console.WriteLine($"*       Accuracy Micro: {metrics.AccuracyMicro}");
     Console.WriteLine($"*       Log Loss: {metrics.LogLoss}");
     Console.WriteLine($"*       Log Loss Reduction: {metrics.LogLossReduction}");
     Console.WriteLine($"*       Per Class Log Loss: {metrics.PerClassLogLoss}");
     Console.WriteLine($"*************************************************");
 }
        private void CompareMatrics(MultiClassClassifierEvaluator.Result metrics)
        {
            Assert.Equal(.98, metrics.AccuracyMacro);
            Assert.Equal(.98, metrics.AccuracyMicro, 2);
            Assert.InRange(metrics.LogLoss, .05, .06);
            Assert.InRange(metrics.LogLossReduction, 94, 96);

            Assert.Equal(3, metrics.PerClassLogLoss.Length);
            Assert.Equal(0, metrics.PerClassLogLoss[0], 1);
            Assert.Equal(.1, metrics.PerClassLogLoss[1], 1);
            Assert.Equal(.1, metrics.PerClassLogLoss[2], 1);
        }
 public static void PrintMultiClassClassificationMetrics(string name, MultiClassClassifierEvaluator.Result metrics)
 {
     Console.WriteLine($"************************************************************");
     Console.WriteLine($"*    Metrics for {name} multi-class classification model   ");
     Console.WriteLine($"*-----------------------------------------------------------");
     Console.WriteLine($"    AccuracyMacro = {metrics.AccuracyMacro:0.####}, a value between 0 and 1, the closer to 1, the better");
     Console.WriteLine($"    AccuracyMicro = {metrics.AccuracyMicro:0.####}, a value between 0 and 1, the closer to 1, the better");
     Console.WriteLine($"    LogLoss = {metrics.LogLoss:0.####}, the closer to 0, the better");
     Console.WriteLine($"    LogLoss for class 1 = {metrics.PerClassLogLoss[0]:0.####}, the closer to 0, the better");
     Console.WriteLine($"    LogLoss for class 2 = {metrics.PerClassLogLoss[1]:0.####}, the closer to 0, the better");
     Console.WriteLine($"    LogLoss for class 3 = {metrics.PerClassLogLoss[2]:0.####}, the closer to 0, the better");
     Console.WriteLine($"************************************************************");
 }
        public static void ToConsole(this MultiClassClassifierEvaluator.Result result)
        {
            Console.WriteLine($"Acuracy macro: {result.AccuracyMacro}");
            Console.WriteLine($"Acuracy micro: {result.AccuracyMicro}");
            Console.WriteLine($"Log loss: {result.LogLoss}");
            Console.WriteLine($"Log loss reduction: {result.LogLossReduction}");
            Console.WriteLine($"Per class log loss: ");
            int count = 0;

            foreach (var logLossClass in result.PerClassLogLoss)
            {
                Console.WriteLine($"\t [{count++}]: {logLossClass}");
            }
            Console.WriteLine($"Top K: {result.TopK}");
            Console.WriteLine($"Top K accuracy: {result.TopKAccuracy}");
        }