|
from common.data import SplitDataset |
|
import streamlit as st |
|
from common.util import ( |
|
test_variables_gbt, |
|
) |
|
from common.views import ( |
|
streamlit_chart_setting_height_width, |
|
plot_importance_gbt, |
|
plot_tree_gbt, |
|
download_importance_gbt, |
|
download_tree_gbt, |
|
) |
|
from views.typing import ModelView |
|
from views.threshold import decision_tree_threshold_view |
|
from views.evaluation import decision_tree_evaluation_view |
|
|
|
|
|
def decisiontree_view(split_dataset: SplitDataset, currency: str): |
|
st.header("Decision Trees") |
|
|
|
clf_gbt_model = test_variables_gbt( |
|
split_dataset.X_train, split_dataset.y_train |
|
) |
|
|
|
st.subheader("Decision Tree Feature Importance") |
|
|
|
(barxsize, barysize,) = streamlit_chart_setting_height_width( |
|
"Chart Settings", 10, 15, "barxsize", "barysize" |
|
) |
|
|
|
fig1 = plot_importance_gbt(clf_gbt_model, barxsize, barysize) |
|
|
|
st.pyplot(fig1) |
|
|
|
download_importance_gbt(fig1, barxsize, barysize) |
|
|
|
st.subheader("Decision Tree Structure") |
|
|
|
(treexsize, treeysize,) = streamlit_chart_setting_height_width( |
|
"Chart Settings", 15, 10, "treexsize", "treeysize" |
|
) |
|
|
|
fig2 = plot_tree_gbt(treexsize, treeysize, clf_gbt_model) |
|
|
|
st.pyplot(fig2) |
|
|
|
download_tree_gbt(treexsize, treeysize) |
|
st.markdown( |
|
"Note: The downloaded decision tree plot chart in png has higher resolution than that displayed here." |
|
) |
|
|
|
threshold = decision_tree_threshold_view(clf_gbt_model, split_dataset) |
|
|
|
df_trueStatus_probabilityDefault_threshStatus_loanAmount = ( |
|
decision_tree_evaluation_view( |
|
clf_gbt_model, |
|
split_dataset, |
|
currency, |
|
threshold.probability_threshold_selected, |
|
threshold.predicted_default_status, |
|
) |
|
) |
|
|
|
return ModelView( |
|
model=clf_gbt_model, |
|
trueStatus_probabilityDefault_threshStatus_loanAmount_df=df_trueStatus_probabilityDefault_threshStatus_loanAmount, |
|
probability_threshold_selected=threshold.probability_threshold_selected, |
|
predicted_default_status=threshold.predicted_default_status, |
|
prediction_probability_df=threshold.prediction_probability_df, |
|
) |
|
|