forked from B-Deprez/NetworkFraud_BiRank_M2V_SAGE
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMetrics.py
More file actions
38 lines (27 loc) · 1.33 KB
/
Metrics.py
File metadata and controls
38 lines (27 loc) · 1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import pandas as pd
import numpy as np
def lift_curve_values(y_val, y_pred, steps):
vals_lift = [] #The lift values to be plotted
df_lift = pd.DataFrame()
df_lift['Real'] = y_val
df_lift['Pred'] = y_pred
df_lift.sort_values('Pred',
ascending=False,
inplace=True)
global_ratio = df_lift['Real'].sum() / len(df_lift['Real'])
for step in steps:
data_len = int(np.ceil(step*len(df_lift)))
data_lift = df_lift.iloc[:data_len, :]
val_lift = data_lift['Real'].sum()/data_len
vals_lift.append(val_lift/global_ratio)
return(vals_lift)
def complementarity_measure(Y_predictions, p):
Y_predictions.columns = ["Real", "Model_1", "Model_2"]
data_len = int(np.ceil(p * len(Y_predictions)))
Y_pred_sort1 = Y_predictions.sort_values('Model_1', ascending=False).iloc[:data_len, :]
Y_pred_sort2 = Y_predictions.sort_values('Model_2', ascending=False).iloc[:data_len, :]
Y_fraud_model_1 = set(Y_pred_sort1[Y_pred_sort1['Real'] == 1].index)
Y_fraud_model_2 = set(Y_pred_sort2[Y_pred_sort2['Real'] == 1].index)
model_1_not_2 = len(Y_fraud_model_1.difference(Y_fraud_model_2))/len(Y_fraud_model_1)
model_2_not_1 = len(Y_fraud_model_2.difference(Y_fraud_model_1)) / len(Y_fraud_model_2)
return(model_1_not_2, model_2_not_1)