CoolFace
Apppublic

verma04ashwin/hcl_hackathon

sourceHugging Faceupdated 11mo agoView on Hugging Face
0likes
app.py59 linesDownload Raw Back to root
1import gradio as gr2import joblib3import numpy as np4import pandas as pd5from sklearn.preprocessing import StandardScaler, LabelEncoder6 7# Load the pre-trained XGBoost model8model = joblib.load('xgboost_model.joblib')9 10# Preprocessing function11def preprocess_input(inputs):12    # Convert the inputs into a DataFrame13    input_data = pd.DataFrame([inputs], columns=['Gender', 'MaritalStatus', 'Age', 'Income', 'YearsAtCompany', 'JobLevel', 'Department'])14 15    # Encoding categorical columns16    label_encoder = LabelEncoder()17    input_data['Gender'] = label_encoder.fit_transform(input_data['Gender'])18    input_data['MaritalStatus'] = label_encoder.fit_transform(input_data['MaritalStatus'])19    input_data = pd.get_dummies(input_data, drop_first=True)20    21    # Scaling numerical features22    scaler = StandardScaler()23    input_data_scaled = scaler.fit_transform(input_data)24    25    return input_data_scaled26 27# Prediction function28def predict(input_data):29    # Preprocess input data30    processed_data = preprocess_input(input_data)31    32    # Predict using the loaded XGBoost model33    prediction = model.predict(processed_data)34    probability = model.predict_proba(processed_data)[:, 1]  # Get the probability for the positive class35    36    # Convert prediction to human-readable result37    result = "Churn" if prediction == 1 else "No Churn"38    39    return result, probability[0]40 41# Define Gradio UI42inputs = [43    gr.inputs.Textbox(label="Gender (Male/Female)"),44    gr.inputs.Textbox(label="Marital Status (Single/Married)"),45    gr.inputs.Slider(minimum=18, maximum=100, default=30, label="Age"),46    gr.inputs.Slider(minimum=10000, maximum=200000, default=50000, label="Income"),47    gr.inputs.Slider(minimum=0, maximum=50, default=5, label="Years at Company"),48    gr.inputs.Slider(minimum=1, maximum=5, default=3, label="Job Level"),49    gr.inputs.Textbox(label="Department (Sales, IT, HR, etc.)")50]51 52output = [53    gr.outputs.Textbox(label="Churn Prediction"),54    gr.outputs.Textbox(label="Churn Probability")55]56 57# Launch the Gradio interface58gr.Interface(fn=predict, inputs=inputs, outputs=output, live=True, title="Customer Churn Prediction App", description="Enter customer information to predict churn status and probability").launch()59