Spaces:
Sleeping
Sleeping
import gradio as gr | |
import pickle | |
import pandas as pd | |
import numpy as np | |
import joblib | |
from gradio.components import * | |
#define prediction function | |
def make_prediction(gender, Partner, Dependents, tenure, MultipleLines, | |
InternetService, OnlineSecurity, OnlineBackup, DeviceProtection, | |
TechSupport, Contract, PaperlessBilling, PaymentMethod, | |
MonthlyCharges, TotalCharges): | |
#make a dataframe from input data | |
input_data = pd.DataFrame({'gender':[gender], 'Partner':[Partner], 'Dependents':[Dependents], 'tenure':[tenure], 'MultipleLines':[MultipleLines], | |
'InternetService':[InternetService], 'OnlineSecurity':[OnlineSecurity], 'OnlineBackup':[OnlineBackup], 'DeviceProtection':[DeviceProtection], | |
'TechSupport':[TechSupport], 'Contract':[Contract], 'PaperlessBilling':[PaperlessBilling], 'PaymentMethod':[PaymentMethod], | |
'MonthlyCharges':[MonthlyCharges], 'TotalCharges':[TotalCharges]}) | |
#load already saved pipeline and make predictions | |
with open("best_model.joblib", "rb") as f: | |
model = joblib.load(f) | |
predt = model.predict(input_data) | |
#return prediction | |
if predt == 'Yes': | |
return 'Customer Will Churn' | |
return 'Customer Will Not Churn' | |
#create the input components for gradio | |
gender_input = gr.Dropdown(choices =['Female', 'Male']) | |
Partner_input = gr.Dropdown(choices =['Yes', 'No']) | |
Dependents_input = gr.Dropdown(choices =['Yes', 'No']) | |
tenure_input = gr.Number(label='Lenght of tenure (no. of months with Telco)') | |
MultipleLines_input = gr.Dropdown(choices =['No phone service', 'No', 'Yes']) | |
InternetService_input = gr.Dropdown(choices =['DSL', 'Fiber optic', 'No']) | |
OnlineSecurity_input = gr.Dropdown(choices =['No', 'Yes', 'No internet service']) | |
OnlineBackup_input = gr.Dropdown(choices =['Yes', 'No', 'No internet service']) | |
DeviceProtection_input = gr.Dropdown(choices =['No', 'Yes', 'No internet service']) | |
TechSupport_input = gr.Dropdown(choices =['No', 'Yes', 'No internet service']) | |
Contract_input = gr.Dropdown(choices =['Month-to-month', 'One year', 'Two year']) | |
PaperlessBilling_input = gr.Dropdown(choices =['Yes', 'No']) | |
PaymentMethod_input = gr.Dropdown(choices =['Electronic check', 'Mailed check', 'Bank transfer (automatic)','Credit card (automatic)']) | |
MonthlyCharges_input = gr.Number(label="Enter monthly charges") | |
TotalCharges_input = gr.Number(label="Enter total charges") | |
output = gr.Textbox(label='Prediction') | |
app = gr.Interface(fn =make_prediction, inputs =[gender_input, | |
Partner_input, | |
Dependents_input, | |
tenure_input, | |
MultipleLines_input, | |
InternetService_input, | |
OnlineSecurity_input, | |
OnlineBackup_input, | |
DeviceProtection_input, | |
TechSupport_input, | |
Contract_input, | |
PaperlessBilling_input, | |
PaymentMethod_input, | |
MonthlyCharges_input, | |
TotalCharges_input], outputs = output) | |
app.launch(debug = True) |