Views
No views yet
| Metric | Score |
|---|---|
| F1 Score | 0.9574 |
| AUC-ROC | 0.9983 |
| AUC-PR | 0.9914 |
| Accuracy | 0.9858 |
| File | Description |
|---|---|
best_model.joblib | Trained pipeline (SMOTE + LightGBM) |
feature_names.joblib | List of 30 feature column names |
shap_explainer.joblib | SHAP TreeExplainer for model interpretability |
1import joblib
2import pandas as pd
3
4# Load model and feature names
5model = joblib.load("best_model.joblib")
6feature_names = joblib.load("feature_names.joblib")
7
8# Predict on new data
9sample = pd.DataFrame([{
10 "Tenure": 4, "CityTier": 3, "WarehouseToHome": 6,
11 "Gender": 1, "HourSpendOnApp": 3, "NumberOfDeviceRegistered": 3,
12 "SatisfactionScore": 2, "MaritalStatus": 0, "NumberOfAddress": 9,
13 "Complain": 1, "OrderAmountHikeFromlastYear": 11,
14 "CouponUsed": 1, "OrderCount": 1, "DaySinceLastOrder": 5,
15 "CashbackAmount": 159.93, "tenure_bucket": 0,
16 "engagement_score": 3, "cashback_per_order": 159.93,
17 "is_recent_buyer": 0, "has_multi_device": 0, "is_high_spender": 0,
18 "PreferredLoginDevice_Mobile Phone": 1,
19 "PreferredPaymentMode_Credit Card": 0,
20 "PreferredPaymentMode_Debit Card": 1,
21 "PreferredPaymentMode_E wallet": 0,
22 "PreferredPaymentMode_UPI": 0,
23 "PreferedOrderCat_Grocery": 0,
24 "PreferedOrderCat_Laptop & Accessory": 1,
25 "PreferedOrderCat_Mobile Phone": 0,
26 "PreferedOrderCat_Others": 0,
27}])
28
29prediction = model.predict(sample)
30probability = model.predict_proba(sample)[:, 1]
31
32print(f"Churn prediction: {prediction[0]}")
33print(f"Churn probability: {probability[0]:.4f}")1import shap
2import joblib
3
4explainer = joblib.load("shap_explainer.joblib")
5shap_values = explainer.shap_values(sample)
6shap.waterfall_plot(shap.Explanation(
7 values=shap_values[0],
8 base_values=explainer.expected_value,
9 data=sample.iloc[0],
10 feature_names=feature_names,
11))