LianHP commited on
Commit
cf40bc6
·
verified ·
1 Parent(s): a723953

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 +70 -0
  4. requirements.txt +6 -0
  5. shap_plot.png +0 -0
.gradio/certificate.pem ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
3
+ TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
4
+ cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
5
+ WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
6
+ ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
7
+ MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
8
+ h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
9
+ 0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
10
+ A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
11
+ T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
12
+ B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
13
+ B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
14
+ KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
15
+ OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
16
+ jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
17
+ qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
18
+ rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
19
+ HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
20
+ hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
21
+ ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
22
+ 3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
23
+ NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
24
+ ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
25
+ TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
26
+ jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
27
+ oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
28
+ 4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
29
+ mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
30
+ emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
31
+ -----END CERTIFICATE-----
README.md CHANGED
@@ -1,12 +1,6 @@
1
  ---
2
- title: SHAP Explain Feature
3
- emoji: 📚
4
- colorFrom: purple
5
- colorTo: red
6
- sdk: gradio
7
- sdk_version: 6.0.1
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: SHAP_explain_feature
 
 
 
 
 
3
  app_file: app.py
4
+ sdk: gradio
5
+ sdk_version: 5.47.2
6
  ---
 
 
app.py ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import shap
3
+ import xgboost as xgb
4
+ import numpy as np
5
+ import pandas as pd
6
+ import matplotlib.pyplot as plt
7
+
8
+ # ---------------------------
9
+ # TRAIN A TINY MODEL
10
+ # ---------------------------
11
+ np.random.seed(42)
12
+ df = pd.DataFrame({
13
+ "age": np.random.randint(20, 80, 200),
14
+ "bmi": np.random.uniform(18, 35, 200),
15
+ "steps": np.random.randint(2000, 14000, 200),
16
+ })
17
+ df["cost"] = df["age"]*20 + df["bmi"]*40 - df["steps"]*0.4 + np.random.normal(0,200,200)
18
+
19
+ X = df[["age","bmi","steps"]]
20
+ y = df["cost"]
21
+
22
+ model = xgb.XGBRegressor(n_estimators=40, max_depth=3)
23
+ model.fit(X, y)
24
+
25
+ explainer = shap.Explainer(model, X)
26
+
27
+ # ---------------------------
28
+ # GRADIO INFERENCE FUNCTION
29
+ # ---------------------------
30
+ def explain_cost(age, bmi, steps):
31
+ input_data = pd.DataFrame([{
32
+ "age": age,
33
+ "bmi": bmi,
34
+ "steps": steps
35
+ }])
36
+
37
+ shap_values = explainer(input_data)
38
+
39
+ # Create SHAP waterfall plot
40
+ plt.figure(figsize=(8,6))
41
+ shap.waterfall_plot(shap_values[0], show=False)
42
+ plt.tight_layout()
43
+
44
+ # Save plot to temporary file
45
+ plot_path = "shap_plot.png"
46
+ plt.savefig(plot_path)
47
+ plt.close()
48
+
49
+ pred = model.predict(input_data)[0]
50
+ return pred, plot_path
51
+
52
+
53
+ # ---------------------------
54
+ # GRADIO UI
55
+ # ---------------------------
56
+ with gr.Blocks() as demo:
57
+ gr.Markdown("# SHAP Explainability Demo")
58
+
59
+ age = gr.Slider(20, 80, value=40, label="Age")
60
+ bmi = gr.Slider(18, 35, value=25, label="BMI")
61
+ steps = gr.Slider(2000, 15000, value=8000, label="Daily Steps")
62
+
63
+ btn = gr.Button("Explain Prediction")
64
+
65
+ pred_output = gr.Number(label="Predicted Cost ($)")
66
+ shap_output = gr.Image(label="SHAP Waterfall")
67
+
68
+ btn.click(explain_cost, [age, bmi, steps], [pred_output, shap_output])
69
+
70
+ demo.launch(share=True)
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ gradio==4.29.0
2
+ xgboost
3
+ shap
4
+ matplotlib
5
+ pandas
6
+ numpy
shap_plot.png ADDED