dschandra commited on
Commit
4d0c7a4
·
verified ·
1 Parent(s): 0c9507e

Update train_model.py

Browse files
Files changed (1) hide show
  1. train_model.py +26 -7
train_model.py CHANGED
@@ -1,17 +1,36 @@
1
-
2
  import xgboost as xgb
3
  import pandas as pd
 
4
  import os
5
- from preprocessing import preprocess_dataframe
6
 
7
- # Sample training data
8
  data = pd.DataFrame([
9
- {"last_premium_paid_date": "2023-06-15", "payment_mode": "Annual", "policy_term": 15, "policy_age": 3, "risk": 1},
10
- {"last_premium_paid_date": "2024-03-10", "payment_mode": "Monthly", "policy_term": 20, "policy_age": 2, "risk": 0},
 
 
 
 
 
 
11
  ])
12
 
13
- X, y = preprocess_dataframe(data)
14
- model = xgb.XGBClassifier()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  model.fit(X, y)
16
 
17
  os.makedirs("model", exist_ok=True)
 
 
1
  import xgboost as xgb
2
  import pandas as pd
3
+ from datetime import datetime, timedelta
4
  import os
 
5
 
6
+ # Extended dummy dataset
7
  data = pd.DataFrame([
8
+ {"last_premium_paid_date": (datetime.now() - timedelta(days=60)).strftime('%Y-%m-%d'), "payment_mode": "Annual", "policy_term": 15, "policy_age": 3, "risk": 1},
9
+ {"last_premium_paid_date": (datetime.now() - timedelta(days=10)).strftime('%Y-%m-%d'), "payment_mode": "Monthly", "policy_term": 20, "policy_age": 2, "risk": 0},
10
+ {"last_premium_paid_date": (datetime.now() - timedelta(days=400)).strftime('%Y-%m-%d'), "payment_mode": "Quarterly", "policy_term": 25, "policy_age": 5, "risk": 1},
11
+ {"last_premium_paid_date": (datetime.now() - timedelta(days=700)).strftime('%Y-%m-%d'), "payment_mode": "Semi-Annual", "policy_term": 10, "policy_age": 8, "risk": 1},
12
+ {"last_premium_paid_date": (datetime.now() - timedelta(days=90)).strftime('%Y-%m-%d'), "payment_mode": "Annual", "policy_term": 12, "policy_age": 4, "risk": 0},
13
+ {"last_premium_paid_date": (datetime.now() - timedelta(days=30)).strftime('%Y-%m-%d'), "payment_mode": "Monthly", "policy_term": 20, "policy_age": 1, "risk": 0},
14
+ {"last_premium_paid_date": (datetime.now() - timedelta(days=300)).strftime('%Y-%m-%d'), "payment_mode": "Annual", "policy_term": 15, "policy_age": 3, "risk": 1},
15
+ {"last_premium_paid_date": (datetime.now() - timedelta(days=180)).strftime('%Y-%m-%d'), "payment_mode": "Quarterly", "policy_term": 18, "policy_age": 6, "risk": 0},
16
  ])
17
 
18
+ def encode_payment_mode(mode):
19
+ return {"Annual": 0, "Semi-Annual": 1, "Quarterly": 2, "Monthly": 3}.get(mode, -1)
20
+
21
+ def calculate_months_since(date_str):
22
+ try:
23
+ delta = datetime.now() - datetime.strptime(date_str, "%Y-%m-%d")
24
+ return delta.days // 30
25
+ except:
26
+ return 0
27
+
28
+ data["months_since_last_payment"] = data["last_premium_paid_date"].apply(calculate_months_since)
29
+ data["payment_mode_encoded"] = data["payment_mode"].apply(encode_payment_mode)
30
+ X = data[["months_since_last_payment", "payment_mode_encoded", "policy_term", "policy_age"]]
31
+ y = data["risk"]
32
+
33
+ model = xgb.XGBClassifier(use_label_encoder=False, eval_metric="logloss")
34
  model.fit(X, y)
35
 
36
  os.makedirs("model", exist_ok=True)