Spaces:
Runtime error
Runtime error
File size: 2,766 Bytes
971bc47 6a5b679 5610cc7 6a5b679 02d331f 6a5b679 efe82c1 02d331f efe82c1 02d331f efe82c1 2fdd5dd 02d331f 6a5b679 93b0219 6a5b679 efe82c1 6a5b679 93b0219 02d331f 93b0219 02d331f 93b0219 6a5b679 02d331f 5610cc7 02d331f 5610cc7 02d331f 5610cc7 02d331f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
import streamlit as st
import streamlit.components.v1 as components
import pandas as pd
import pickle
import matplotlib.pyplot as plt
from pybanking.churn_prediction import model_churn
from pybanking.EDA import data_analysis
import sklearn.metrics as metrics
from mlxtend.plotting import plot_confusion_matrix
import streamlit.components.v1 as components
from PIL import Image
st.set_page_config(page_title="Customer Churn Prediction Model", layout="wide")
col1,col2 = st.columns([1,2])
with col1:
image = Image.open('Shorthills.png')
st.image(image)
with col2:
st.title('Customer Churn Prediction Model')
df = model_churn.get_data()
option2 = st.selectbox(
'Which dataset would you like to use for prediction?',
['Sample Dataset', 'Upload Custom']
)
if option2 == 'Upload Custom':
file = st.file_uploader("Choose a file")
if file is not None:
#read csv
df = pd.read_csv(file)
else:
st.warning("you need to upload a csv file.")
st.subheader('This is the Selected Data')
st.dataframe(df.head(5))
analysis_class = data_analysis.Analysis()
option3 = st.selectbox(
'Select Exploratory Data Analysis type',
['None', 'DataPrep', 'SweetViz',]
)
if option3 == 'SweetViz':
res = analysis_class.sweetviz_analysis(df)
res.show_html(open_browser=True, layout='widescreen', scale=None)
elif option3 == 'DataPrep':
res = analysis_class.dataprep_analysis(df)
res.show_browser()
# res.save('DataPrep.html')
# HtmlFile = open('DataPrep.html', 'r', encoding='utf-8')
# source_code = HtmlFile.read()
# with st.expander("See Report"):
# components.iframe(source_code, height=1000)
elif option3 == 'Pandas Profiling':
res = analysis_class.pandas_analysis(df)
model_names = [
"Logistic_Regression",
"Support_Vector_Machine",
"Support_Vector_Machine_Optimized",
"Decision_Tree",
"Neural_Network",
"Random_Forest",
"Pycaret_Best"
]
option = st.selectbox(
'Select a model to be used',
model_names
)
model = pickle.load(open(option+'.pkl', 'rb'))
st.write("Model Loaded : ", option)
X, y = model_churn.preprocess_inputs(df, option)
if option2 == 'Upload custom':
model = model_churn.train(df, model)
y_pred = model.predict(X)
st.write("Accuracy:",metrics.accuracy_score(y, y_pred))
st.write("Precision:",metrics.precision_score(y, y_pred))
st.write("Recall:",metrics.recall_score(y, y_pred))
fig, ax = plot_confusion_matrix(conf_mat=metrics.confusion_matrix(y, y_pred), figsize=(6, 6), cmap=plt.cm.Reds, colorbar=True)
plt.xlabel('Predictions', fontsize=18)
plt.ylabel('Actuals', fontsize=18)
plt.title('Confusion Matrix', fontsize=18)
st.pyplot(fig) |