Ejemplo n.º 1
0
    def test_avg_odds_diff_edge_4(self):

        # Data: edge case of 1
        y_true = np.array([0, 0, 0, 1, 1, 1, 1, 0])
        y_pred = np.array([1, 1, 1, 1, 0, 0, 0, 0])
        is_member = np.array([1, 1, 1, 1, 0, 0, 0, 0])

        # Metric
        metric = BinaryFairnessMetrics.AverageOdds()

        # Score
        assert metric.get_score(y_true, y_pred, is_member) == 1
Ejemplo n.º 2
0
    def test_avg_odds_diff_normal_list(self):

        # Data: medium number
        y_true = [0, 1, 0, 1, 1, 1, 1, 0]
        y_pred = [0, 0, 1, 0, 0, 1, 1, 1]
        is_member = [1, 1, 1, 1, 0, 0, 0, 0]

        # Metric
        metric = BinaryFairnessMetrics.AverageOdds()

        # Score
        score = metric.get_score(y_true, y_pred, is_member)

        assert np.isclose(score, -0.5833, atol=0.01)
Ejemplo n.º 3
0
    def test_avg_odds_diff_edge_3(self):

        # Data
        y_pred = np.array([0, 0, 0, 0, 0, 0, 0, 0])
        is_member = np.array([0, 0, 0, 0, 1, 1, 1, 1])
        # both homogeneous
        y_true = np.array([0, 0, 0, 0, 1, 1, 1, 1])

        # Metric
        metric = BinaryFairnessMetrics.AverageOdds()

        # Score
        with self.assertWarns(UserWarning):
            assert metric.get_score(y_true, y_pred, is_member) is None
Ejemplo n.º 4
0
    def test_avg_odds_diff_edge_1(self):

        # Data: edge case - homogeneous ground truth within group - returns None
        # unprivileged homogeneous
        y_true = np.array([0, 0, 0, 1, 1, 1, 1, 1])
        y_pred = np.array([0, 0, 0, 0, 0, 0, 0, 0])
        is_member = np.array([0, 0, 0, 0, 1, 1, 1, 1])

        # Metric
        metric = BinaryFairnessMetrics.AverageOdds()

        # Score
        with self.assertWarns(UserWarning):
            assert metric.get_score(y_true, y_pred, is_member) is None
Ejemplo n.º 5
0
    def test_avg_odds_diff_normal_invalid(self):
        # Data: medium number
        my_df = pd.DataFrame.from_dict({
            'y_true': [0, 1, 0, 1, 1, 1, 1, 0],
            'y_pred': [0, 0, 1, 0, 0, 1, 1, -1],
            'is_member': [1, 1, 1, 1, 0, 0, 0, 0]
        })

        # Metric
        metric = BinaryFairnessMetrics.AverageOdds()

        # Score
        with self.assertRaises(ValueError):
            metric.get_score(my_df['y_true'], my_df['y_pred'],
                             my_df['is_member'])
Ejemplo n.º 6
0
    def test_avg_odds_diff_normal_df(self):
        # Data: medium number
        my_df = pd.DataFrame.from_dict({
            'y_true': [0, 1, 0, 1, 1, 1, 1, 0],
            'y_pred': [0, 0, 1, 0, 0, 1, 1, 1],
            'is_member': [1, 1, 1, 1, 0, 0, 0, 0]
        })

        # Metric
        metric = BinaryFairnessMetrics.AverageOdds()

        # Score
        score = metric.get_score(my_df['y_true'], my_df['y_pred'],
                                 my_df['is_member'])

        assert np.isclose(score, -0.5833, atol=0.01)