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])