Spaces:
Sleeping
Sleeping
| import joblib | |
| import pandas as pd | |
| kmeans = joblib.load('artifacts/kmeans.pkl') | |
| scaler = joblib.load('artifacts/scaler.pkl') | |
| CLUSTER_INFO = { | |
| 0: { | |
| "name": "High-Value Loyal Shoppers", | |
| "description": "High income, high total spending, prefers in-store shopping, moderately recent purchases.", | |
| "recommendation": "Offer exclusive in-store experiences, VIP loyalty tiers, early access to new collections, and personalized concierge service." | |
| }, | |
| 1: { | |
| "name": "Budget-Conscious Occasional Shoppers", | |
| "description": "Low income, low spending, high web browsing, but made a very recent purchase.", | |
| "recommendation": "Target with limited-time discounts, entry-level product bundles, and personalized email offers based on browsing history to encourage repeat purchases." | |
| }, | |
| 2: { | |
| "name": "Mid-Tier Engaged Browsers", | |
| "description": "Mid-range income, low spending despite frequent website visits; hasn’t purchased in a long time.", | |
| "recommendation": "Re-engage with cart abandonment reminders, free shipping thresholds, or 'we miss you' incentives (e.g., 15% off). Highlight bestsellers and social proof to drive conversion." | |
| }, | |
| 3: { | |
| "name": "Active Online-Focused Shoppers", | |
| "description": "High income, high spending, shops frequently both online and in-store—with strongest activity on web.", | |
| "recommendation": "Offer premium bundles, omnichannel loyalty rewards (e.g., buy online, pick up in-store + bonus points), and personalized cross-channel recommendations." | |
| } | |
| } | |
| def predict(age, income, total_spending, num_web_purchases, num_store_purchases, num_web_visits, recency): | |
| input_data = pd.DataFrame({ | |
| "Age": [age], | |
| "Income": [income], | |
| "Total_Spendings": [total_spending], | |
| "NumWebPurchases": [num_web_purchases], | |
| "NumStorePurchases": [num_store_purchases], | |
| "NumWebVisitsMonth": [num_web_visits], | |
| "Recency": [recency]}) | |
| scaled_data = scaler.transform(input_data) | |
| cluster_id = kmeans.predict(scaled_data)[0] | |
| info = CLUSTER_INFO[cluster_id] | |
| return { | |
| "cluster_id": int(cluster_id), | |
| "cluster_name": info["name"], | |
| "description": info["description"], | |
| "recommendation": info["recommendation"] | |
| } | |
| """if __name__ == "__main__": | |
| result = predict(45, 60000, 900, 6, 8, 5, 40) | |
| print(f"✨ Customer Segment: {result['cluster_name']} (ID: {result['cluster_id']})") | |
| print(f"📝 Profile: {result['description']}") | |
| print(f"🎯 Marketing Action: {result['recommendation']}")""" | |