riyadahmadov commited on
Commit
c522b4e
1 Parent(s): fa2b818

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -20
app.py CHANGED
@@ -19,14 +19,15 @@ with open("pca_model.pkl", "rb") as file:
19
  # Dummy data for generating choices
20
  df = pd.read_csv('synthetic_financial_data.csv')
21
 
22
- # Function to group ages
23
  def group(x):
24
- if x < 33:
25
- return '18-32'
26
- elif x < 60:
27
- return '33-60'
28
- else:
29
- return '60+'
 
30
 
31
  # Choices for dropdown menus
32
  card_type_choices = [(val, val) for val in df['card_type'].unique()]
@@ -49,11 +50,7 @@ def predict(transaction_id, customer_id, merchant_id, amount, transaction_time,
49
  data['Age_group'] = data['customer_age'].apply(lambda x: group(x))
50
  data = pd.get_dummies(data, columns=['Age_group'], drop_first=True, dtype=float)
51
 
52
- # Define all possible feature columns used during training
53
- columns_to_add = ['customer_age',
54
- 'card_type_American Express', 'card_type_Discover', 'card_type_MasterCard', 'card_type_Visa',
55
- 'purchase_category_Gas Station', 'purchase_category_Groceries', 'purchase_category_Online Shopping', 'purchase_category_Restaurant', 'purchase_category_Retail', 'purchase_category_Travel',
56
- 'Age_group_33-60', 'Age_group_60+']
57
 
58
  # Add missing columns with default value of 0
59
  for column in columns_to_add:
@@ -61,31 +58,27 @@ def predict(transaction_id, customer_id, merchant_id, amount, transaction_time,
61
  data[column] = 0
62
 
63
  for i in data.columns:
64
- data[i] = data[i].astype(int)
65
 
66
  # Perform PCA
67
  X_pca = pca.transform(data[['purchase_category_Groceries', 'purchase_category_Retail', 'purchase_category_Travel', 'Age_group_33-60', 'Age_group_60+']])
68
  data['pca1'] = X_pca[:, 0]
69
  data['pca2'] = X_pca[:, 1]
70
-
71
- data.drop(columns=['customer_age'], inplace=True) # Remove 'customer_age' as it's already included in Age_group
72
 
 
73
  # Make predictions
74
  prediction = clf.predict(data)
75
- result = "Fraudulent" if prediction[0] == 1 else "Not Fraudulent"
76
- # Custom output for specific IDs
77
- return f'Customer with ID {customer_id} and Transaction ID {transaction_id}, which happened at {transaction_time}, is {result}'
78
  except Exception as e:
79
  return str(e)
80
 
81
-
82
  # Define Gradio interface
83
  inputs = [
84
  gr.Textbox(label="Transaction ID"),
85
  gr.Textbox(label="Customer ID"),
86
  gr.Textbox(label="Merchant ID"),
87
  gr.Number(label="Amount"),
88
- gr.Textbox(label="Transaction Date (YYYY-MM-DD)"),
89
  gr.Dropdown(choices=card_type_choices, label="Card Type"),
90
  gr.Dropdown(choices=location_choices, label="Location"),
91
  gr.Dropdown(choices=purchase_category_choices, label="Purchase Category"),
 
19
  # Dummy data for generating choices
20
  df = pd.read_csv('synthetic_financial_data.csv')
21
 
22
+ # Let's create new column from age column
23
  def group(x):
24
+ if x < 33:
25
+ a = '18-32'
26
+ elif x < 60:
27
+ a = '33-60'
28
+ elif x >= 60:
29
+ a = '60+'
30
+ return a
31
 
32
  # Choices for dropdown menus
33
  card_type_choices = [(val, val) for val in df['card_type'].unique()]
 
50
  data['Age_group'] = data['customer_age'].apply(lambda x: group(x))
51
  data = pd.get_dummies(data, columns=['Age_group'], drop_first=True, dtype=float)
52
 
53
+ columns_to_add = ['customer_age','card_type_MasterCard','purchase_category_Online Shopping' ,'card_type_Discover', 'card_type_Visa', 'purchase_category_Groceries', 'purchase_category_Restaurant','purchase_category_Retail', 'purchase_category_Travel', 'Age_group_33-60', 'Age_group_60+']
 
 
 
 
54
 
55
  # Add missing columns with default value of 0
56
  for column in columns_to_add:
 
58
  data[column] = 0
59
 
60
  for i in data.columns:
61
+ data[i] = data[i].astype(int)
62
 
63
  # Perform PCA
64
  X_pca = pca.transform(data[['purchase_category_Groceries', 'purchase_category_Retail', 'purchase_category_Travel', 'Age_group_33-60', 'Age_group_60+']])
65
  data['pca1'] = X_pca[:, 0]
66
  data['pca2'] = X_pca[:, 1]
 
 
67
 
68
+ data.drop(columns=['customer_age', 'card_type_Discover', 'card_type_Visa', 'purchase_category_Groceries', 'purchase_category_Retail', 'purchase_category_Travel', 'Age_group_33-60', 'Age_group_60+'], inplace=True)
69
  # Make predictions
70
  prediction = clf.predict(data)
71
+ return "Fraudulent" if prediction[0] == 1 else "Not Fraudulent"
 
 
72
  except Exception as e:
73
  return str(e)
74
 
 
75
  # Define Gradio interface
76
  inputs = [
77
  gr.Textbox(label="Transaction ID"),
78
  gr.Textbox(label="Customer ID"),
79
  gr.Textbox(label="Merchant ID"),
80
  gr.Number(label="Amount"),
81
+ gr.Textbox(label="Transaction Time"),
82
  gr.Dropdown(choices=card_type_choices, label="Card Type"),
83
  gr.Dropdown(choices=location_choices, label="Location"),
84
  gr.Dropdown(choices=purchase_category_choices, label="Purchase Category"),