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)
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
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
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)
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)
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
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
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
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