LianHP commited on
Commit
4316927
·
verified ·
1 Parent(s): e611cc8

Upload folder using huggingface_hub

Browse files
Files changed (5) hide show
  1. .gradio/certificate.pem +31 -0
  2. README.md +3 -9
  3. app.py +97 -0
  4. plot.png +0 -0
  5. requirements.txt +5 -0
.gradio/certificate.pem ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ -----BEGIN CERTIFICATE-----
2
+ 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
31
+ -----END CERTIFICATE-----
README.md CHANGED
@@ -1,12 +1,6 @@
1
  ---
2
- title: MMMInc Testing
3
- emoji: 🐢
4
- colorFrom: indigo
5
- colorTo: blue
6
- sdk: gradio
7
- sdk_version: 6.0.2
8
  app_file: app.py
9
- pinned: false
 
10
  ---
11
-
12
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: MMMInc-testing
 
 
 
 
 
3
  app_file: app.py
4
+ sdk: gradio
5
+ sdk_version: 5.47.2
6
  ---
 
 
app.py ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import pandas as pd
3
+ import numpy as np
4
+ from sklearn.linear_model import LinearRegression
5
+ import matplotlib.pyplot as plt
6
+
7
+ # To avoid backend display issues on HF
8
+ plt.switch_backend("Agg")
9
+
10
+
11
+ def generate_fake_data():
12
+ np.random.seed(42)
13
+ weeks = 104
14
+
15
+ data = pd.DataFrame({
16
+ "week": range(1, weeks + 1),
17
+ "tv_spend": np.random.gamma(30, 15, weeks),
18
+ "social_spend": np.random.gamma(20, 20, weeks),
19
+ "search_spend": np.random.gamma(25, 10, weeks),
20
+ "price": np.random.normal(10, 0.4, weeks),
21
+ })
22
+
23
+ # true coefficients
24
+ true_coef = {"tv": 0.8, "social": 1.2, "search": 0.6, "price": -20}
25
+
26
+ data["sales"] = (
27
+ true_coef["tv"] * data["tv_spend"] +
28
+ true_coef["social"] * data["social_spend"] +
29
+ true_coef["search"] * data["search_spend"] +
30
+ true_coef["price"] * data["price"] +
31
+ np.random.normal(0, 50, weeks)
32
+ ).round(2)
33
+
34
+ return data
35
+
36
+
37
+ def run_mmm(data, incremental_increase):
38
+ X = data[["tv_spend", "social_spend", "search_spend", "price"]]
39
+ y = data["sales"]
40
+
41
+ model = LinearRegression()
42
+ model.fit(X, y)
43
+
44
+ coef = pd.Series(model.coef_, index=X.columns).round(4)
45
+ intercept = round(model.intercept_, 2)
46
+
47
+ # Incrementality
48
+ social_coef = coef["social_spend"]
49
+ incremental_sales = round(social_coef * incremental_increase, 2)
50
+
51
+ # Plot actual vs predicted
52
+ data["pred_sales"] = model.predict(X)
53
+
54
+ plt.figure(figsize=(8, 4))
55
+ plt.plot(data["sales"], label="Actual Sales")
56
+ plt.plot(data["pred_sales"], label="Predicted Sales")
57
+ plt.legend()
58
+ plt.title("Actual vs Predicted Sales (MMM)")
59
+ plt.xlabel("Week")
60
+ plt.ylabel("Sales")
61
+
62
+ plot_path = "plot.png"
63
+ plt.tight_layout()
64
+ plt.savefig(plot_path)
65
+ plt.close()
66
+
67
+ return (
68
+ coef.to_frame("Coefficient").reset_index().rename(columns={"index": "Variable"}),
69
+ f"Incremental sales from +${incremental_increase} social spend: {incremental_sales}",
70
+ plot_path
71
+ )
72
+
73
+
74
+ def ui_run(incremental_increase):
75
+ data = generate_fake_data()
76
+ coef_table, inc_msg, plot_path = run_mmm(data, incremental_increase)
77
+ return coef_table, inc_msg, plot_path
78
+
79
+
80
+ ### -------- Gradio Interface -------- ###
81
+ demo = gr.Interface(
82
+ fn=ui_run,
83
+ inputs=[
84
+ gr.Number(label="Increase in Social Spend (In Dollars)", value=10000)
85
+ ],
86
+ outputs=[
87
+ gr.Dataframe(label="MMM Coefficients"),
88
+ gr.Textbox(label="Incrementality Result"),
89
+ gr.Image(label="Actual vs Predicted Sales")
90
+ ],
91
+ title="Marketing Mix Model (MMM) + Incrementality",
92
+ description="A simple MMM that models TV, Social, Search, and Price to predict Sales. Enter an additional Social Ad spend to estimate the incremental uplift.",
93
+ allow_flagging="never"
94
+ )
95
+
96
+ if __name__ == "__main__":
97
+ demo.launch(share=True)
plot.png ADDED
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ gradio
2
+ pandas
3
+ numpy
4
+ scikit-learn
5
+ matplotlib