File size: 1,431 Bytes
2226294
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
39
40
41
42
43
44
45
46
47
48
import gradio as gr
import pandas as pd
import joblib

# load full pipeline
model = joblib.load("model.joblib")

def predict_excel(file):
    # Read uploaded Excel file
    df = pd.read_excel(file.name)

    # Check if required columns exist
    required_cols = [
        "CustomerID", "Tenure", "PreferredLoginDevice", "CityTier",
        "WarehouseToHome", "PreferredPaymentMode", "Gender", "HourSpendOnApp",
        "NumberOfDeviceRegistered", "PreferredOrderCat", "SatisfactionScore",
        "MaritalStatus", "NumberOfAddress", "Complain",
        "OrderAmountHikeFromlastYear", "CouponUsed", "OrderCount",
        "DaySinceLastOrder", "CashbackAmount"
    ]

    missing = [c for c in required_cols if c not in df.columns]
    if missing:
        return f"❌ Missing columns in Excel: {missing}"

    # Predict
    preds = model.predict(df[required_cols])

    # Add prediction column
    df["Prediction"] = preds

    # Save to new Excel file
    out_path = "predicted_output.xlsx"
    df.to_excel(out_path, index=False)

    return out_path  # Gradio will let user download it

# Gradio UI
demo = gr.Interface(
    fn=predict_excel,
    inputs=gr.File(label="Upload Excel File (.xlsx)"),
    outputs=gr.File(label="Download Updated Excel With Predictions"),
    title="Excel-Based Customer Churn Predictor",
    description="Upload an Excel file to receive a new Excel file with model predictions added."
)

demo.launch()