import gradio as gr import pandas as pd import joblib # load full pipeline model = joblib.load("model.joblib") def predict_excel(file): df = pd.read_excel(file.name, sheet_name="E Comm") required_cols = [ "CustomerID", "Tenure", "PreferredLoginDevice", "CityTier", "WarehouseToHome", "PreferredPaymentMode", "Gender", "HourSpendOnApp", "NumberOfDeviceRegistered", "PreferedOrderCat", "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 None, f"❌ Missing columns in Excel: {missing}" preds = model.predict(df[required_cols]) df["Prediction"] = preds out_path = "predicted_output.xlsx" df.to_excel(out_path, index=False) return out_path, "✅ Successfully generated predictions!" # 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"), gr.Text(label="Status Message") ], title="Excel-Based Customer Churn Predictor", description="Upload an Excel file to receive a new Excel file with model predictions added." ) demo.launch()