erikky commited on
Commit
4701a31
·
verified ·
1 Parent(s): 54636c9

initial push (app.py, model, requirements)

Browse files
shelfy_purchase_rate_v2/app.py ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import pandas as pd
3
+ import joblib
4
+
5
+ # Load model
6
+ model = joblib.load("shelfy_purchase_rate_v2.joblib")
7
+
8
+ def predict_conversion(product_name, views, carts, unique_users, avg_price, carts_lag_1, carts_lag_3):
9
+ # Convert to float (Gradio passes strings)
10
+ views = float(views or 0)
11
+ carts = float(carts or 0)
12
+ unique_users = float(unique_users or 0)
13
+ avg_price = float(avg_price or 0)
14
+ carts_lag_1 = float(carts_lag_1 or 0)
15
+ carts_lag_3 = float(carts_lag_3 or 0)
16
+
17
+ # Calculate ratios (same as training)
18
+ cart_intent = carts / (views + 1)
19
+ user_intensity = unique_users / (views + 1)
20
+
21
+ data = pd.DataFrame({
22
+ 'views': [views],
23
+ 'carts': [carts],
24
+ 'unique_users': [unique_users],
25
+ 'avg_price': [avg_price],
26
+ 'carts_lag_1': [carts_lag_1],
27
+ 'carts_lag_3': [carts_lag_3],
28
+ 'cart_intent': [cart_intent],
29
+ 'user_intensity': [user_intensity]
30
+ })
31
+
32
+ future_rate = model.predict(data)[0]
33
+
34
+ return (
35
+ f"{future_rate:.2%}",
36
+ f"${future_rate * views * avg_price:.0f}",
37
+ "Good Demand" if future_rate >= 0.025 else "Medium Demand" if future_rate >= 0.015 else "Low Demand"
38
+ )
39
+
40
+ demo = gr.Interface(
41
+ fn=predict_conversion,
42
+ inputs=[
43
+ gr.Textbox("iPhone Case", label="Product Name"),
44
+ gr.Number(1500, label="Views (Today)"),
45
+ gr.Number(45, label="Carts (Today)"),
46
+ gr.Number(320, label="Unique Users"),
47
+ gr.Number(26, label="Avg Price $"),
48
+ gr.Number(40, label="Yesterday Carts"),
49
+ gr.Number(35, label="3 Days Ago Carts")
50
+ ],
51
+ outputs=[
52
+ gr.Label(label="Predicted Conversion (Tomorrow)"),
53
+ gr.Label(label="Revenue Potential"),
54
+ gr.Label(label="Demand")
55
+ ],
56
+ title="🛒 Shelfy: Tomorrow's Best Sellers",
57
+ description="Top 10% predictions captured 25.4% of sales!"
58
+ )
59
+
60
+ demo.launch()
shelfy_purchase_rate_v2/requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ gradio==4.44.0
2
+ xgboost
3
+ pandas
4
+ joblib
5
+ scikit-learn
shelfy_purchase_rate_v2/shelfy_purchase_rate_v2.joblib ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9c69101767b9c73a12c57ceb042cd54d362f35475b87b8883cd2aec1c7884e24
3
+ size 798259