import streamlit as st import pandas as pd import numpy as np import pickle import json import joblib as jb from tensorflow.keras.models import load_model from feature_engine.outliers import Winsorizer #load models final_pipeline = jb.load('final_pipeline.pkl') model_ann = load_model('model.h5') #load data df = pd.read_csv('https://raw.githubusercontent.com/FerdiErs/SQL/main/churn.csv') def run(): st.markdown("

Churn predictor

", unsafe_allow_html=True) # description st.subheader('Will youre customer churn?.') with st.form('key=form_prediction') : Age = st.number_input('AGE',min_value=10,max_value=70,step=1) Region = st.selectbox('Region', df['region_category'].unique()) Member = st.selectbox('Membership Type', df['membership_category'].unique()) offer = st.selectbox('Preferred Offer', sorted(df['preferred_offer_types'].unique())) Internet = st.selectbox('Your Connectivity', sorted(df['internet_option'].unique())) last_login = st.number_input('last login',min_value=0,max_value=365,step=7) time_spent = st.slider('TimeSpent',min_value=0,max_value=10000) transaction_value = st.number_input('Money spent',min_value=10,max_value=99999999,step=1) login_days = st.number_input('login streak',min_value=0,max_value=99999999) points_in_wallet= st.number_input('wallet money',min_value=0,max_value=99999999) past_complaint= st.selectbox('complaint', sorted(df['past_complaint'].unique())) feedback = st.selectbox('feedback', sorted(df['feedback'].unique())) submitted = st.form_submit_button('Predict') data_inf = { 'age': Age, 'region_category': Region, 'membership_category': Member, 'preferred_offer_types': offer, 'internet_option': Internet, 'days_since_last_login': last_login, 'avg_time_spent': time_spent, 'avg_transaction_value': transaction_value, 'avg_frequency_login_days': login_days, 'points_in_wallet': points_in_wallet, 'past_complaint': past_complaint, 'feedback':feedback } data_inf = pd.DataFrame([data_inf]) st.dataframe(data_inf) if submitted: # transfrom data data_inf_transform = final_pipeline.transform(data_inf) # Predict using bagging y_pred_inf = model_ann.predict(data_inf_transform) y_pred_inf = np.where(y_pred_inf >= 0.5, 1, 0) y_pred_inf if __name__=='__main__': run()