Spaces:
Sleeping
Sleeping
Update train_model.py
Browse files- 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 |
-
#
|
| 8 |
data = pd.DataFrame([
|
| 9 |
-
{"last_premium_paid_date":
|
| 10 |
-
{"last_premium_paid_date":
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
])
|
| 12 |
|
| 13 |
-
|
| 14 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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)
|