Пример #1
0
def gender_performance(df_test_encoded, predictions, print_=False):
    predictions_m = []
    predictions_f = []
    df_test_encoded_m = []
    df_test_encoded_f = []
    tamanho = len(df_test_encoded['sex'])

    for i in range(tamanho):
        if df_test_encoded['sex'].iloc[i] == 1:
            df_test_encoded_m.append(df_test_encoded['earnings'].iloc[i])
            predictions_m.append(predictions[i])
        else:
            df_test_encoded_f.append(df_test_encoded['earnings'].iloc[i])
            predictions_f.append(predictions[i])
  

    true_positive_m = true_positive_rate(df_test_encoded_m, predictions_m, pos_label=1)
    false_positive_m = false_positive_rate(df_test_encoded_m, predictions_m, pos_label=1)
    true_negative_m = true_negative_rate(df_test_encoded_m, predictions_m, pos_label=1)
    false_negative_m = false_negative_rate(df_test_encoded_m, predictions_m, pos_label=1)

    true_positive_f = true_positive_rate(df_test_encoded_f, predictions_f, pos_label=1)
    false_positive_f = false_positive_rate(df_test_encoded_f, predictions_f, pos_label=1)
    true_negative_f = true_negative_rate(df_test_encoded_f, predictions_f, pos_label=1)
    false_negative_f = false_negative_rate(df_test_encoded_f, predictions_f, pos_label=1)

    if print_:
        print("True Positive Rate for Male:", true_positive_m)
        print("True Positive Rate for Female:", true_positive_f)
        print("False Positive Rate for Male:", false_positive_m)
        print("False Positive Rate for Female:", false_positive_f)
        print("True Negative Rate for Male:", true_negative_m)
        print("True Negative Rate for Female:", true_negative_f)
        print("False Negative Rate for Male:", false_negative_m)
        print("False Negative Rate for Female:", false_negative_f)
Пример #2
0
    def test_some_correct(self):
        y_true = [0, 0, 0, 0, 1, 1, 1, 1]
        y_pred = [0, 0, 0, 1, 1, 0, 0, 0]

        result = metrics.true_positive_rate(y_true, y_pred)
        assert result == 0.25
        result = metrics.true_positive_rate(y_true, y_pred, pos_label=0)
        assert result == 0.75
Пример #3
0
    def test_all_correct(self):
        y_true = [0, 0, 0, 0, 1]
        y_pred = [0, 0, 0, 0, 1]

        result = metrics.true_positive_rate(y_true, y_pred)
        assert result == 1

        result = metrics.true_positive_rate(y_true, y_pred, pos_label=0)
        assert result == 1
Пример #4
0
    def test_against_sklearn(self):
        y_true = [0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1]
        y_pred = [1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1]

        result = metrics.true_positive_rate(y_true, y_pred)
        result_skm = skm.recall_score(y_true, y_pred)
        assert result == pytest.approx(result_skm)

        result = metrics.true_positive_rate(y_true, y_pred, pos_label=0)
        result_skm = skm.recall_score(y_true, y_pred, pos_label=0)
        assert result == pytest.approx(result_skm)
Пример #5
0
    def test_against_sklearn_weighted(self):
        y_true = [0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1]
        y_pred = [1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1]
        weight = [1, 2, 4, 5, 1, 2, 2, 3, 1, 2, 1, 3, 1, 5, 4, 2]

        result = metrics.true_positive_rate(y_true, y_pred, sample_weight=weight)
        result_skm = skm.recall_score(y_true, y_pred, sample_weight=weight)
        assert result == pytest.approx(result_skm)

        result = metrics.true_positive_rate(y_true, y_pred,
                                            pos_label=0, sample_weight=weight)
        result_skm = skm.recall_score(y_true, y_pred,
                                      pos_label=0, sample_weight=weight)
        assert result == pytest.approx(result_skm)
Пример #6
0
    def test_tpr_values_alpha(self):
        a = 'a'
        b = 'b'
        y_true = [a, b, a, b, b, b, b, b, a, a, a, a, b, b, a, b]
        y_pred = [a, b, b, a, a, b, a, a, b, b, a, b, a, b, a, a]

        # Use sklearn for validation
        result_a = metrics.true_positive_rate(y_true, y_pred, pos_label=a)
        result_skm_a = skm.recall_score(y_true, y_pred, pos_label=a)
        assert result_a == pytest.approx(result_skm_a)

        result_b = metrics.true_positive_rate(y_true, y_pred, pos_label=b)
        result_skm_b = skm.recall_score(y_true, y_pred, pos_label=b)
        assert result_b == pytest.approx(result_skm_b)

        # Sanity check on the in put data
        assert result_a != result_b
Пример #7
0
    def test_all_negative_ones(self):
        neg_ones = -1 * np.ones(10)

        # Should behave as if pos_label=1
        assert metrics.true_positive_rate(neg_ones, neg_ones) == 0
        assert metrics.false_positive_rate(neg_ones, neg_ones) == 0
        assert metrics.true_negative_rate(neg_ones, neg_ones) == 1
        assert metrics.false_negative_rate(neg_ones, neg_ones) == 0

        assert metrics.true_positive_rate(neg_ones, neg_ones, pos_label=1) == 0
        assert metrics.false_positive_rate(neg_ones, neg_ones, pos_label=1) == 0
        assert metrics.true_negative_rate(neg_ones, neg_ones, pos_label=1) == 1
        assert metrics.false_negative_rate(neg_ones, neg_ones, pos_label=1) == 0

        assert metrics.true_positive_rate(neg_ones, neg_ones, pos_label=-1) == 1
        assert metrics.false_positive_rate(neg_ones, neg_ones, pos_label=-1) == 0
        assert metrics.true_negative_rate(neg_ones, neg_ones, pos_label=-1) == 0
        assert metrics.false_negative_rate(neg_ones, neg_ones, pos_label=-1) == 0
Пример #8
0
    def test_all_ones(self):
        ones = np.ones(10)

        # should behave as if pos_label=1
        assert metrics.true_positive_rate(ones, ones) == 1
        assert metrics.false_positive_rate(ones, ones) == 0
        assert metrics.true_negative_rate(ones, ones) == 0
        assert metrics.false_negative_rate(ones, ones) == 0

        assert metrics.true_positive_rate(ones, ones, pos_label=1) == 1
        assert metrics.false_positive_rate(ones, ones, pos_label=1) == 0
        assert metrics.true_negative_rate(ones, ones, pos_label=1) == 0
        assert metrics.false_negative_rate(ones, ones, pos_label=1) == 0

        assert metrics.true_positive_rate(ones, ones, pos_label=0) == 0
        assert metrics.false_positive_rate(ones, ones, pos_label=0) == 0
        assert metrics.true_negative_rate(ones, ones, pos_label=0) == 1
        assert metrics.false_negative_rate(ones, ones, pos_label=0) == 0
Пример #9
0
    def test_all_zeros(self):
        zeros = np.zeros(10)

        # Should behave as if pos_label=1
        assert metrics.true_positive_rate(zeros, zeros) == 0
        assert metrics.false_positive_rate(zeros, zeros) == 0
        assert metrics.true_negative_rate(zeros, zeros) == 1
        assert metrics.false_negative_rate(zeros, zeros) == 0

        assert metrics.true_positive_rate(zeros, zeros, pos_label=1) == 0
        assert metrics.false_positive_rate(zeros, zeros, pos_label=1) == 0
        assert metrics.true_negative_rate(zeros, zeros, pos_label=1) == 1
        assert metrics.false_negative_rate(zeros, zeros, pos_label=1) == 0

        assert metrics.true_positive_rate(zeros, zeros, pos_label=0) == 1
        assert metrics.false_positive_rate(zeros, zeros, pos_label=0) == 0
        assert metrics.true_negative_rate(zeros, zeros, pos_label=0) == 0
        assert metrics.false_negative_rate(zeros, zeros, pos_label=0) == 0