示例#1
0
    def test_regular_score_types_1(self):
        self.assertEqual(PercentScore(0).norm_score, 0)
        self.assertEqual(PercentScore(100).norm_score, 1)

        score = PercentScore(42)
        self.assertRaises(InvalidScoreError, PercentScore, 101)
        self.assertRaises(InvalidScoreError, PercentScore, -1)
        self.assertEqual(str(score), "42.0%")
        self.assertEqual(score.norm_score, 0.42)

        self.assertEqual(1, ZScore(0.0).norm_score)
        self.assertEqual(0, ZScore(1e12).norm_score)
        self.assertEqual(0, ZScore(-1e12).norm_score)

        ZScore(0.7)
        score = ZScore.compute({"mean": 3.0, "std": 1.0}, {"value": 2.0})

        self.assertIsInstance(ZScore.compute({"mean": 3.0}, {"value": 2.0}),
                              InsufficientDataScore)
        self.assertIsInstance(
            ZScore.compute({
                "mean": 3.0,
                "std": -1.0
            }, {"value": 2.0}),
            InsufficientDataScore,
        )
        self.assertIsInstance(
            ZScore.compute({
                "mean": np.nan,
                "std": np.nan
            }, {"value": np.nan}),
            InsufficientDataScore,
        )
        self.assertEqual(score.score, -1.0)

        self.assertEqual(1, CohenDScore(0.0).norm_score)
        self.assertEqual(0, CohenDScore(1e12).norm_score)
        self.assertEqual(0, CohenDScore(-1e12).norm_score)
        CohenDScore(-0.3)
        score = CohenDScore.compute({
            "mean": 3.0,
            "std": 1.0
        }, {
            "mean": 2.0,
            "std": 1.0
        })

        self.assertAlmostEqual(-0.707, score.score, 3)
        self.assertEqual("D = -0.71", str(score))

        score = CohenDScore.compute({
            "mean": 3.0,
            "std": 10.0,
            "n": 10
        }, {
            "mean": 2.5,
            "std": 10.0,
            "n": 10
        })
        self.assertAlmostEqual(-0.05, score.score, 2)
示例#2
0
    def test_regular_score_types_1(self):
        score = PercentScore(42)
        self.assertEqual(score.sort_key,0.42)

        ZScore(0.7)
        score = ZScore.compute({'mean':3.,'std':1.},{'value':2.})
        self.assertEqual(score.score,-1.)

        CohenDScore(-0.3)
        score = CohenDScore.compute({'mean':3.,'std':1.},{'mean':2.,'std':1.})
        self.assertTrue(-0.708 < score.score < -0.707)
 def compute(cls, observation, prediction):
     """
     Computes a z-score from an observation and a prediction.
     """
     scores = []
     table = []  # store intermediate results
     for obs, pred in zip(observation, prediction):
         assert obs.keys() == pred.keys()
         assert len(obs) == 1
         scores.append(
             ZScore.compute(list(obs.values())[0],
                            list(pred.values())[0]).score)
         key = list(obs.keys())[0]
         table.append((key, obs[key]["mean"], obs[key]["std"],
                       pred[key]["value"], scores[-1]))
     sc = np.sqrt(np.mean(np.square(scores)))
     print("RMS(Z) " + str(sc))
     score = cls(sc, related_data={'score_table': table})
     return score