Andreean's picture
Upload app.py
c94d5f8
import streamlit as st
import tensorflow as tf
from tensorflow import keras
import pandas as pd
import numpy as np
import pickle
from tensorflow.keras.models import load_model
from PIL import Image
st.set_page_config(page_title = 'Customer Churn Prediction',
initial_sidebar_state = "expanded",
menu_items = {
'About' : 'Milestone 1 Customer Churn Predicton '
})
image = Image.open('indihome.jpg')
# load model
class columnDropperTransformer():
def __init__(self, columns):
self.columns = columns
def transform(self, X, y=None):
return X.drop(self.columns, axis=1)
def fit(self, X, y=None):
return self
pickles = open('preprocessings.pkl', 'rb')
preprocessing = pickle.load(pickles)
saved_model=load_model('Model.h5')
def predict(inputs):
df = pd.DataFrame(inputs, index=[0])
df = preprocessing.transform(df)
y_pred = saved_model.predict(df)
y_pred = np.where(y_pred < 0.5, 0, 1).squeeze()
print(y_pred)
return y_pred.item()
columns = ['SeniorCitizen', 'Partner', 'tenure', 'MultipleLines', 'InternetService', 'OnlineSecurity', 'OnlineBackup',
'DeviceProtection', 'TechSupport', 'Contract', 'MonthlyCharges', 'TotalCharges']
label = ['Not Churn', 'Churn']
st.title("Customer Churn Prediction")
st.image(image)
SeniorCitizen = st.selectbox("Senior Citizen", ['Yes', 'No'])
Partner = st.selectbox("Marriage Status", ['Married', 'Not Married'])
tenure = st.slider("Tenure Length", min_value=0.0, max_value=72.0, value=24.0, step=1.0, help='Tenure Length Default 24 Months')
MultipleLines = st.selectbox("Multiple Lines", ['Yes', 'No'])
InternetService = st.selectbox("Which internet service do you use?", ['DSL', 'Fiber optic', 'No'])
OnlineSecurity = st.selectbox("Do you have online security?", ['No', 'Yes', 'No internet service'])
OnlineBackup = st.selectbox("Do you have online backup?", ['No', 'Yes', 'No internet service'])
DeviceProtection = st.selectbox("Do you have device protection?", ['No', 'Yes', 'No internet service'])
TechSupport = st.selectbox("Do you have Tech Support?", ['No', 'Yes', 'No internet service'])
Contract = st.selectbox("Which contract do you use?", ['Month-to-month', 'One year', 'Two year'])
MonthlyCharges = st.number_input("Monthly Charges", min_value=19.0, max_value=119.0, value=75.0, step=0.1, help='Customers Monthly Charges Default is $75')
TotalCharges = st.number_input("Total Charges", min_value=19.0, max_value=8685.0, value=500.0, step=0.1, help='Customers Total Charges Default is $500')
#inference
new_data = [SeniorCitizen, Partner, tenure,
MultipleLines, InternetService, OnlineSecurity, OnlineBackup,
DeviceProtection, TechSupport,
Contract, MonthlyCharges, TotalCharges]
new_data = pd.DataFrame([new_data], columns = columns)
new_data = preprocessing.transform(new_data).tolist()
res = saved_model.predict(new_data)
res = 0 if res < 0.5 else 1
press = st.button('Predict')
if press:
st.title(label[res])