Bitha's picture
Update prediction.py
9de0f58 verified
# import library
import streamlit as st
import pandas as pd
import numpy as np
import pickle
# Load Model
with open('model.pkl', 'rb') as file:
model = pickle.load(file)
# Function to run streamlit model predictor
def run():
# Set Title
st.title("Customer Churn Prediction")
st.markdown('---')
# Create a Form for Data Inference
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)
# Create a button to make predictions
submitted = st.form_submit_button("Predict")
# Dataframe
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.write('~ This Customer is Predicted Not to Churn ~')
else:
st.write('~ This Customer is Predicted to Churn ~')
if __name__== '__main__':
run()