|
|
|
import streamlit as st |
|
import pandas as pd |
|
import numpy as np |
|
import pickle |
|
|
|
|
|
with open('model.pkl', 'rb') as file: |
|
model = pickle.load(file) |
|
|
|
|
|
def run(): |
|
|
|
|
|
st.title("Customer Churn Prediction") |
|
st.markdown('---') |
|
|
|
|
|
st.markdown('## Input Data') |
|
with st.form('my_form'): |
|
RowNumber = st.number_input('Row Number', min_value=10000, max_value=200000) |
|
CustomerId = st.number_input('Customer ID', min_value=100000, max_value=20000000) |
|
Surname = st.text_input('Surname or Last Name', '') |
|
CreditScore = st.number_input('Credit Score', min_value=350, max_value=850) |
|
Geography = st.selectbox('Select Geography', ['Spain', 'Germany', 'France']) |
|
Gender = st.selectbox('Select gender', ['Male', 'Female']) |
|
Age = st.number_input('Age', min_value=18, max_value=95) |
|
Tenure = st.number_input('Tenure', min_value=0, max_value=11) |
|
Balance = st.number_input('Balance', min_value=0, max_value=300000) |
|
NumOfProducts = st.selectbox('Number of Products', (1,2,3,4)) |
|
HasCrCard = st.selectbox('Has Credit Card or not? 0 = No, Yes = 1', (0,1)) |
|
IsActiveMember = st.selectbox('Is Active Member or not? 0 = No, Yes = 1', (0,1)) |
|
EstimatedSalary = st.number_input('Estimated Salary', min_value=12, max_value=300000) |
|
|
|
|
|
submitted = st.form_submit_button("Predict") |
|
|
|
|
|
data = {'RowNumber': RowNumber, |
|
'CustomerId': CustomerId, |
|
'Surname': Surname, |
|
'CreditScore': CreditScore, |
|
'Geography': Geography, |
|
'Gender': Gender, |
|
'Age': Age, |
|
'Tenure': Tenure, |
|
'Balance': Balance, |
|
'NumOfProducts': NumOfProducts, |
|
'HasCrCard': HasCrCard, |
|
'IsActiveMember': IsActiveMember, |
|
'EstimatedSalary': EstimatedSalary |
|
} |
|
|
|
df = pd.DataFrame([data]) |
|
st.dataframe(df) |
|
|
|
if submitted: |
|
y_pred_inf = model.predict(df) |
|
if y_pred_inf[0] == 0: |
|
st.subheader('~ This Customer is Predicted Not to Churn ~') |
|
else: |
|
st.write('~ This Customer is Predicted to Churn ~') |
|
|
|
if __name__== '__main__': |
|
run() |