コード例 #1
0
        public void RankingMetricsPerfectTest()
        {
            double[] ndcg    = { 0.2, 0.3, 1 };
            double[] dcg     = { 0.2, 0.3, 1 };
            var      metrics = MetricsUtil.CreateRankingMetrics(dcg, ndcg);

            Assert.False(IsPerfectModel(metrics, RankingMetric.Dcg, 3)); //REVIEW: No true Perfect model
            Assert.True(IsPerfectModel(metrics, RankingMetric.Ndcg, 3));
        }
コード例 #2
0
        public void RankingMetricsNonPerfectTest()
        {
            double[] ndcg    = { 0.2, 0.3, 0.4 };
            double[] dcg     = { 0.2, 0.3, 0.4 };
            var      metrics = MetricsUtil.CreateRankingMetrics(dcg, ndcg);

            Assert.False(IsPerfectModel(metrics, RankingMetric.Dcg, 3));
            Assert.False(IsPerfectModel(metrics, RankingMetric.Ndcg, 3));
        }
コード例 #3
0
        public void RegressionMetricsPerfectTest()
        {
            var metrics = MetricsUtil.CreateRegressionMetrics(0, 0, 0, 0, 1);

            Assert.True(IsPerfectModel(metrics, RegressionMetric.MeanAbsoluteError));
            Assert.True(IsPerfectModel(metrics, RegressionMetric.MeanSquaredError));
            Assert.True(IsPerfectModel(metrics, RegressionMetric.RootMeanSquaredError));
            Assert.True(IsPerfectModel(metrics, RegressionMetric.RSquared));
        }
コード例 #4
0
        public void RegressionMetricsNonPerfectTest()
        {
            var metrics = MetricsUtil.CreateRegressionMetrics(0.2, 0.3, 0.4, 0.5, 0.6);

            Assert.False(IsPerfectModel(metrics, RegressionMetric.MeanAbsoluteError));
            Assert.False(IsPerfectModel(metrics, RegressionMetric.MeanSquaredError));
            Assert.False(IsPerfectModel(metrics, RegressionMetric.RootMeanSquaredError));
            Assert.False(IsPerfectModel(metrics, RegressionMetric.RSquared));
        }
コード例 #5
0
        public void RegressionMetricsGetScoreTest()
        {
            var metrics = MetricsUtil.CreateRegressionMetrics(0.2, 0.3, 0.4, 0.5, 0.6);

            Assert.Equal(0.2, GetScore(metrics, RegressionMetric.MeanAbsoluteError));
            Assert.Equal(0.3, GetScore(metrics, RegressionMetric.MeanSquaredError));
            Assert.Equal(0.4, GetScore(metrics, RegressionMetric.RootMeanSquaredError));
            Assert.Equal(0.6, GetScore(metrics, RegressionMetric.RSquared));
        }
コード例 #6
0
        public void MulticlassMetricsPerfectTest()
        {
            var metrics = MetricsUtil.CreateMulticlassClassificationMetrics(1, 1, 0, 1, 0, new double[] { 1 }, new double[] { });

            Assert.True(IsPerfectModel(metrics, MulticlassClassificationMetric.MicroAccuracy));
            Assert.True(IsPerfectModel(metrics, MulticlassClassificationMetric.MacroAccuracy));
            Assert.True(IsPerfectModel(metrics, MulticlassClassificationMetric.LogLoss));
            Assert.True(IsPerfectModel(metrics, MulticlassClassificationMetric.LogLossReduction));
            Assert.True(IsPerfectModel(metrics, MulticlassClassificationMetric.TopKAccuracy));
        }
コード例 #7
0
        public void MulticlassMetricsNonPerfectTest()
        {
            var metrics = MetricsUtil.CreateMulticlassClassificationMetrics(0.1, 0.2, 0.3, 0.4, 0, new double[] { 0.5 }, new double[] { });

            Assert.False(IsPerfectModel(metrics, MulticlassClassificationMetric.MacroAccuracy));
            Assert.False(IsPerfectModel(metrics, MulticlassClassificationMetric.MicroAccuracy));
            Assert.False(IsPerfectModel(metrics, MulticlassClassificationMetric.LogLoss));
            Assert.False(IsPerfectModel(metrics, MulticlassClassificationMetric.LogLossReduction));
            Assert.False(IsPerfectModel(metrics, MulticlassClassificationMetric.TopKAccuracy));
        }
コード例 #8
0
        public void MulticlassMetricsGetScoreTest()
        {
            var metrics = MetricsUtil.CreateMulticlassClassificationMetrics(0.1, 0.2, 0.3, 0.4, 0, new double[] { 0.5 }, new double[] { });

            Assert.Equal(0.1, GetScore(metrics, MulticlassClassificationMetric.MicroAccuracy));
            Assert.Equal(0.2, GetScore(metrics, MulticlassClassificationMetric.MacroAccuracy));
            Assert.Equal(0.3, GetScore(metrics, MulticlassClassificationMetric.LogLoss));
            Assert.Equal(0.4, GetScore(metrics, MulticlassClassificationMetric.LogLossReduction));
            Assert.Equal(0.5, GetScore(metrics, MulticlassClassificationMetric.TopKAccuracy));
        }
コード例 #9
0
        public void BinaryMetricsPerfectTest()
        {
            var metrics = MetricsUtil.CreateBinaryClassificationMetrics(1, 1, 1, 1, 1, 1, 1, 1);

            Assert.True(IsPerfectModel(metrics, BinaryClassificationMetric.Accuracy));
            Assert.True(IsPerfectModel(metrics, BinaryClassificationMetric.AreaUnderRocCurve));
            Assert.True(IsPerfectModel(metrics, BinaryClassificationMetric.AreaUnderPrecisionRecallCurve));
            Assert.True(IsPerfectModel(metrics, BinaryClassificationMetric.F1Score));
            Assert.True(IsPerfectModel(metrics, BinaryClassificationMetric.NegativePrecision));
            Assert.True(IsPerfectModel(metrics, BinaryClassificationMetric.NegativeRecall));
            Assert.True(IsPerfectModel(metrics, BinaryClassificationMetric.PositivePrecision));
            Assert.True(IsPerfectModel(metrics, BinaryClassificationMetric.PositiveRecall));
        }
コード例 #10
0
        public void BinaryMetricsNonPerfectTest()
        {
            var metrics = MetricsUtil.CreateBinaryClassificationMetrics(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8);

            Assert.False(IsPerfectModel(metrics, BinaryClassificationMetric.Accuracy));
            Assert.False(IsPerfectModel(metrics, BinaryClassificationMetric.AreaUnderRocCurve));
            Assert.False(IsPerfectModel(metrics, BinaryClassificationMetric.AreaUnderPrecisionRecallCurve));
            Assert.False(IsPerfectModel(metrics, BinaryClassificationMetric.F1Score));
            Assert.False(IsPerfectModel(metrics, BinaryClassificationMetric.NegativePrecision));
            Assert.False(IsPerfectModel(metrics, BinaryClassificationMetric.NegativeRecall));
            Assert.False(IsPerfectModel(metrics, BinaryClassificationMetric.PositivePrecision));
            Assert.False(IsPerfectModel(metrics, BinaryClassificationMetric.PositiveRecall));
        }
コード例 #11
0
        public void BinaryMetricsGetScoreTest()
        {
            var metrics = MetricsUtil.CreateBinaryClassificationMetrics(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8);

            Assert.Equal(0.1, GetScore(metrics, BinaryClassificationMetric.AreaUnderRocCurve));
            Assert.Equal(0.2, GetScore(metrics, BinaryClassificationMetric.Accuracy));
            Assert.Equal(0.3, GetScore(metrics, BinaryClassificationMetric.PositivePrecision));
            Assert.Equal(0.4, GetScore(metrics, BinaryClassificationMetric.PositiveRecall));
            Assert.Equal(0.5, GetScore(metrics, BinaryClassificationMetric.NegativePrecision));
            Assert.Equal(0.6, GetScore(metrics, BinaryClassificationMetric.NegativeRecall));
            Assert.Equal(0.7, GetScore(metrics, BinaryClassificationMetric.F1Score));
            Assert.Equal(0.8, GetScore(metrics, BinaryClassificationMetric.AreaUnderPrecisionRecallCurve));
        }
コード例 #12
0
        public void RankingMetricsGetScoreTest()
        {
            double[] ndcg    = { 0.2, 0.3, 0.4 };
            double[] dcg     = { 0.2, 0.3, 0.4 };
            var      metrics = MetricsUtil.CreateRankingMetrics(dcg, ndcg);

            Assert.Equal(0.4, GetScore(metrics, RankingMetric.Dcg, 3));
            Assert.Equal(0.4, GetScore(metrics, RankingMetric.Ndcg, 3));

            double[] largeNdcg = { 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.85, 0.9, 0.95 };
            double[] largeDcg  = { 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.85, 0.9, 0.95 };
            metrics = MetricsUtil.CreateRankingMetrics(largeDcg, largeNdcg);
            Assert.Equal(0.3, GetScore(metrics, RankingMetric.Dcg, 3));
            Assert.Equal(0.3, GetScore(metrics, RankingMetric.Ndcg, 3));
        }
コード例 #13
0
        public void FindBestResultWithSomeNullMetrics()
        {
            var metrics1 = MetricsUtil.CreateRegressionMetrics(0.2, 0.2, 0.2, 0.2, 0.2);
            var metrics2 = MetricsUtil.CreateRegressionMetrics(0.3, 0.3, 0.3, 0.3, 0.3);
            var metrics3 = MetricsUtil.CreateRegressionMetrics(0.1, 0.1, 0.1, 0.1, 0.1);

            var runResults = new List <RunDetail <RegressionMetrics> >()
            {
                new RunDetail <RegressionMetrics>(null, null, null, null, null, null),
                new RunDetail <RegressionMetrics>(null, null, null, null, metrics1, null),
                new RunDetail <RegressionMetrics>(null, null, null, null, metrics2, null),
                new RunDetail <RegressionMetrics>(null, null, null, null, metrics3, null),
            };

            var metricsAgent = new RegressionMetricsAgent(null, RegressionMetric.RSquared);
            var bestResult   = BestResultUtil.GetBestRun(runResults, metricsAgent, true);

            Assert.Equal(0.3, bestResult.ValidationMetrics.RSquared);
        }