File size: 1,853 Bytes
1f67974 85a44a5 1f67974 85a44a5 1f67974 94dc782 85a44a5 1f67974 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
from modules import DataCleaner, NaNImputerWrapper, FeatureEng, AdjustedProbClassifier
import gradio as gr
import joblib
import numpy as np
import pandas as pd
from xgboost import XGBClassifier
# load the ML pipeline
pipeline = joblib.load(r'full_xgb_pipeline_adjusted_prob.joblib')
feedback_options = [
'Products always in Stock', 'Quality Customer Care', 'Reasonable Price',
'User Friendly Website', 'No Reason Specified', 'Poor Website',
'Poor Customer Service', 'Poor Product Quality', 'Too many ads'
]
membership_options = [
'No Membership', 'Basic Membership', 'Silver Membership',
'Gold Membership', 'Platinum Membership', 'Premium Membership'
]
def predict(points_in_wallet, feedback, membership_category):
try:
# convert points_in_wallet to float and validate
points_in_wallet = float(points_in_wallet)
if points_in_wallet < 0:
return "Error: points_in_wallet cannot be negative."
X_df = pd.DataFrame({
'points_in_wallet': [points_in_wallet],
'feedback': [feedback],
'membership_category': [membership_category]
})
prediction = pipeline.predict(X_df)
return f"Churn Risk Score: {prediction[0]}"
except Exception as e:
return f"Prediction error: {str(e)}"
# Gradio Interface
demo = gr.Interface(
fn=predict,
inputs=[
gr.Number(label="Points in Wallet", value=0, precision=2),
gr.Dropdown(choices=feedback_options, label="Feedback Category"),
gr.Dropdown(choices=membership_options, label="Membership Category")
],
outputs=gr.Textbox(label="Prediction"),
title="Customer Churn Risk Score Predictor",
description="Enter wallet points, select feedback and membership to get a prediction."
)
if __name__ == "__main__":
demo.launch()
|