Spaces:
Running
Running
| import gradio as gr | |
| import pickle | |
| import numpy as np | |
| # Load model and scaler | |
| with open("marketing_model.pkl", "rb") as f: | |
| model = pickle.load(f) | |
| with open("scaler.pkl", "rb") as f: | |
| scaler = pickle.load(f) | |
| def predict_campaign( | |
| education, marital_status, income, kidhome, teenhome, recency, | |
| wines, fruits, meat, fish, sweets, gold, | |
| deals, web, catalog, store, visits, | |
| cmp3, cmp4, cmp5, cmp1, cmp2, | |
| complain, cost_contact, revenue, | |
| age | |
| ): | |
| total_spending = wines + fruits + meat + fish + sweets + gold | |
| features = np.array([ | |
| education, marital_status, income, kidhome, teenhome, recency, | |
| wines, fruits, meat, fish, sweets, gold, | |
| deals, web, catalog, store, visits, | |
| cmp3, cmp4, cmp5, cmp1, cmp2, | |
| complain, cost_contact, revenue, | |
| age, total_spending | |
| ]).reshape(1, -1) | |
| features = scaler.transform(features) | |
| prediction = model.predict(features)[0] | |
| if prediction == 1: | |
| return "✅ Customer will accept the marketing campaign" | |
| else: | |
| return "❌ Customer will NOT accept the campaign" | |
| interface = gr.Interface( | |
| fn=predict_campaign, | |
| inputs=[ | |
| gr.Number(label="Education"), | |
| gr.Number(label="Marital Status"), | |
| gr.Number(label="Income"), | |
| gr.Number(label="Kidhome"), | |
| gr.Number(label="Teenhome"), | |
| gr.Number(label="Recency"), | |
| gr.Number(label="Wine Spending"), | |
| gr.Number(label="Fruit Spending"), | |
| gr.Number(label="Meat Spending"), | |
| gr.Number(label="Fish Spending"), | |
| gr.Number(label="Sweet Spending"), | |
| gr.Number(label="Gold Spending"), | |
| gr.Number(label="Deals Purchases"), | |
| gr.Number(label="Web Purchases"), | |
| gr.Number(label="Catalog Purchases"), | |
| gr.Number(label="Store Purchases"), | |
| gr.Number(label="Web Visits Per Month"), | |
| gr.Number(label="Accepted Campaign 3"), | |
| gr.Number(label="Accepted Campaign 4"), | |
| gr.Number(label="Accepted Campaign 5"), | |
| gr.Number(label="Accepted Campaign 1"), | |
| gr.Number(label="Accepted Campaign 2"), | |
| gr.Number(label="Complain"), | |
| gr.Number(label="Cost Contact"), | |
| gr.Number(label="Revenue"), | |
| gr.Number(label="Age"), | |
| ], | |
| outputs=gr.Textbox(label="Prediction"), | |
| title="Sales Analytics & Marketing Automation", | |
| description="Predict whether a customer will accept a marketing campaign" | |
| ) | |
| interface.launch() |