123ahmed's picture
Upload app.py
13cce62 verified
import pandas as pd
import gradio as gr
import joblib
le=joblib.load('le_col.pkl')
min_max=joblib.load('MinMax.pkl')
lr=joblib.load('model.pkl')
le_col=['gender','Partner','Dependents','PhoneService','PaperlessBilling','MultipleLines','InternetService','OnlineSecurity','OnlineBackup','DeviceProtection','TechSupport','StreamingTV','StreamingMovies','Contract','PaymentMethod']
MinMax=['TotalCharges','MonthlyCharges','tenure']
def prediction_churn_model(gr,sc,pr,dp,t,ps,mp,Is,os,ob,dd,ts,st,sm,cr,pb,pm,mc,tc):
try:
input_data=pd.DataFrame({
'gender':[gr],
'SeniorCitizen':[sc],
'Partner':[pr],
'Dependents':[dp],
'tenure':[t],
'PhoneService':[ps],
'MultipleLines':[mp],
'InternetService':[Is],
'OnlineSecurity':[os],
'OnlineBackup':[ob],
'DeviceProtection':[dd],
'TechSupport':[ts],
'StreamingTV':[st],
'StreamingMovies':[sm],
'Contract':[cr],
'PaperlessBilling':[pb],
'PaymentMethod':[pm],
'MonthlyCharges':[mc],
'TotalCharges':[tc]
})
for col in le_col:
input_data[col]=le[col].transform(input_data[col])
input_data[MinMax]=min_max.transform(input_data[MinMax])
prediction=lr.predict(input_data)
if prediction[0]==0:
return 'No'
else:
return 'Yes'
except Exception as e:
return str(e)
gr.Interface(
inputs=[
gr.Dropdown(['Female', 'Male'],label='gender'),
gr.Number(label='SeniorCitizen'),
gr.Dropdown(['No','Yes'],label='Partner'),
gr.Dropdown(['No','Yes'],label='Dependents'),
gr.Number(label='tenure'),
gr.Dropdown(['Yes','No'],label='PhoneService'),
gr.Dropdown(['No','Yes'],label='MultipleLines'),
gr.Dropdown(['Fiber optic','DSL','No'],label='InternetService'),
gr.Dropdown(['No','Yes','No internet service'],label='OnlineSecurity'),
gr.Dropdown(['No','Yes','No internet service'],label='OnlineBackup'),
gr.Dropdown(['No','Yes','No internet service'],label='DeviceProtection'),
gr.Dropdown(['No','Yes','No internet service'],label='TechSupport'),
gr.Dropdown(['No','Yes','No internet service'],label='StreamingTV'),
gr.Dropdown(['No','Yes','No internet service'],label='StreamingMovies'),
gr.Dropdown(['Month-to-month','Two year','One year'],label='Contract'),
gr.Dropdown(['Yes','No'],label='PaperlessBilling'),
gr.Dropdown(['Electroniccheck', 'Mailedcheck', 'Banktransfer', 'Creditcard'],label='PaymentMethod'),
gr.Number(label='MonthlyCharges'),
gr.Number(label='TotalCharges')
],
fn=prediction_churn_model,
outputs=gr.Textbox(label='Prediction'),
title='Prediction Telecoum Churn Model'
).launch()