Spaces:
Runtime error
Runtime error
Upload 2 files
Browse files
app.py
CHANGED
|
@@ -46,8 +46,7 @@ def load_study():
|
|
| 46 |
Load the trained classifier pipeline
|
| 47 |
"""
|
| 48 |
with open('study.pkl', 'rb') as file:
|
| 49 |
-
|
| 50 |
-
return study
|
| 51 |
|
| 52 |
|
| 53 |
|
|
@@ -518,9 +517,14 @@ with model_result_container:
|
|
| 518 |
sample.loc[0,feat]=1
|
| 519 |
|
| 520 |
# Predict and report result
|
| 521 |
-
study.predict_proba_pipeline(X_test=sample)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 522 |
|
| 523 |
-
st.write(f'**BikeSaferPA predicts a :red[{100*
|
| 524 |
|
| 525 |
### SHAP values ####
|
| 526 |
|
|
@@ -536,17 +540,20 @@ The force plot will update as you adjust input features in the menu above.
|
|
| 536 |
""")
|
| 537 |
|
| 538 |
# SHAP will just explain classifier, so need transformed X_train and X_test
|
| 539 |
-
pipe = study.pipe_fitted
|
| 540 |
-
sample_trans = pipe[:-1].transform(sample)
|
| 541 |
|
| 542 |
# # Need masker for linear model
|
| 543 |
# masker = shap.maskers.Independent(data=X_train_trans)
|
| 544 |
|
| 545 |
# Initialize explainer and compute and store SHAP values as an explainer object
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 546 |
explainer = shap.TreeExplainer(pipe[-1], feature_names = pipe['col'].get_feature_names_out())
|
| 547 |
shap_values = explainer(sample_trans)
|
| 548 |
sample_trans = pd.DataFrame(sample_trans,columns=pipe['col'].get_feature_names_out())
|
| 549 |
-
|
| 550 |
# def st_shap(plot, height=None):
|
| 551 |
# shap_html = f"<head>{shap.getjs()}</head><body>{plot.html()}</body>"
|
| 552 |
# components.html(shap_html, height=height)
|
|
|
|
| 46 |
Load the trained classifier pipeline
|
| 47 |
"""
|
| 48 |
with open('study.pkl', 'rb') as file:
|
| 49 |
+
return pickle.load(file)
|
|
|
|
| 50 |
|
| 51 |
|
| 52 |
|
|
|
|
| 517 |
sample.loc[0,feat]=1
|
| 518 |
|
| 519 |
# Predict and report result
|
| 520 |
+
# study.predict_proba_pipeline(X_test=sample)
|
| 521 |
+
feature_names = study.pipe_fitted[-2].get_feature_names_out()
|
| 522 |
+
pipe = study.pipe_fitted
|
| 523 |
+
sample_trans = pipe[:-1].transform(sample)
|
| 524 |
+
st.write(sample)
|
| 525 |
+
y_predict_proba = pipe.predict_proba(sample)[0,1]
|
| 526 |
|
| 527 |
+
st.write(f'**BikeSaferPA predicts a :red[{100*y_predict_proba:.2f}%] probability that a cyclist suffers serious injury or fatality under these conditions.**')
|
| 528 |
|
| 529 |
### SHAP values ####
|
| 530 |
|
|
|
|
| 540 |
""")
|
| 541 |
|
| 542 |
# SHAP will just explain classifier, so need transformed X_train and X_test
|
|
|
|
|
|
|
| 543 |
|
| 544 |
# # Need masker for linear model
|
| 545 |
# masker = shap.maskers.Independent(data=X_train_trans)
|
| 546 |
|
| 547 |
# Initialize explainer and compute and store SHAP values as an explainer object
|
| 548 |
+
# shap_values_list = []
|
| 549 |
+
# for calibrated_classifier in clf.calibrated_classifiers_:
|
| 550 |
+
# explainer = shap.TreeExplainer(calibrated_classifier.estimator,feature_names = pipe['col'].get_feature_names_out())
|
| 551 |
+
# shap_values = explainer(sample_trans)
|
| 552 |
+
# shap_values_list.append(shap_values.values)
|
| 553 |
+
# shap_values = np.array(shap_values_list).sum(axis=0) / len(shap_values_list)
|
| 554 |
explainer = shap.TreeExplainer(pipe[-1], feature_names = pipe['col'].get_feature_names_out())
|
| 555 |
shap_values = explainer(sample_trans)
|
| 556 |
sample_trans = pd.DataFrame(sample_trans,columns=pipe['col'].get_feature_names_out())
|
|
|
|
| 557 |
# def st_shap(plot, height=None):
|
| 558 |
# shap_html = f"<head>{shap.getjs()}</head><body>{plot.html()}</body>"
|
| 559 |
# components.html(shap_html, height=height)
|
study.pkl
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
-
oid sha256:
|
| 3 |
-
size
|
|
|
|
| 1 |
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:06ddfe748638a38e34509926709c5064800dba3c9c850c959921b19b0b01fd47
|
| 3 |
+
size 9938500
|