Xenax33's picture
Upload 11 files
989f5b5 verified
import gradio as gr
import requests
import pandas as pd
def clean_data(data):
# Define the mapping for categorical variables
job_map = {
"admin.": 0,
"blue-collar": 1,
"entrepreneur": 2,
"housemaid": 3,
"management": 4,
"retired": 5,
"self-employed": 6,
"services": 7,
"student": 8,
"technician": 9,
"unemployed": 10,
"unknown": 11
}
marital_map = {
"divorced": 0,
"married": 1,
"single": 2,
"unknown": 3
}
education_map = {
"primary": 0,
"secondary": 1,
"tertiary": 2,
"unknown": 3
}
default_map = {
"no": 0,
"yes": 1,
"unknown": 2
}
housing_map = {
"no": 0,
"yes": 1,
"unknown": 2
}
loan_map = {
"no": 0,
"yes": 1,
"unknown": 2
}
contact_map = {
"cellular": 0,
"telephone": 1,
"unknown": 2
}
month_map = {
"apr": 0,
"aug": 1,
"dec": 2,
"feb": 3,
"jan": 4,
"jul": 5,
"jun": 6,
"mar": 7,
"may": 8,
"nov": 9,
"oct": 10,
"sep": 11
}
poutcome_map = {
"failure": 0,
"nonexistent": 1,
"success": 2,
"unknown": 3
}
# Create a dictionary to store the cleaned data
cleaned_data = {}
# Clean the data
cleaned_data["age"] = data[0]
cleaned_data["job"] = job_map.get(data[1], 11)
cleaned_data["marital"] = marital_map.get(data[2], 3)
cleaned_data["education"] = education_map.get(data[3], 3)
cleaned_data["default"] = default_map.get(data[4], 2)
cleaned_data["balance"] = data[5] / 1000
cleaned_data["housing"] = housing_map.get(data[6], 2)
cleaned_data["loan"] = loan_map.get(data[7], 2)
cleaned_data["contact"] = contact_map.get(data[8], 2)
cleaned_data["day"] = data[9]
cleaned_data["month"] = month_map.get(data[10], 11)
cleaned_data["duration"] = data[11] / 100
cleaned_data["campaign"] = data[12]
cleaned_data["pdays"] = data[13] / 100
cleaned_data["previous"] = data[14]
cleaned_data["poutcome"] = poutcome_map.get(data[15], 3)
print("Cleaned Data:")
print(cleaned_data)
return cleaned_data
def predict(age, job, marital, education, default, balance, housing, loan, contact, day, month, duration, campaign, pdays, previous, poutcome):
cleaned_data = clean_data([age, job, marital, education, default, balance, housing, loan, contact, day, month, duration, campaign, pdays, previous, poutcome])
url = "http://localhost:8000/predict/"
api_data = {"features": list(cleaned_data.values())}
print("API Request:")
print(api_data)
response = requests.post(url, json=api_data)
prediction = response.json()["prediction"][0]
return prediction
demo = gr.Interface(
fn=predict,
inputs=[
gr.Number(label="Age"),
gr.Text(label="Job"),
gr.Text(label="Marital"),
gr.Text(label="Education"),
gr.Text(label="Default"),
gr.Number(label="Balance"),
gr.Text(label="Housing"),
gr.Text(label="Loan"),
gr.Text(label="Contact"),
gr.Number(label="Day"),
gr.Text(label="Month"),
gr.Number(label="Duration"),
gr.Number(label="Campaign"),
gr.Number(label="Pdays"),
gr.Number(label="Previous"),
gr.Text(label="Poutcome"),
],
outputs=gr.Text(label="Prediction"),
title="Bank Marketing Prediction",
description="This is a demo for bank marketing prediction. Please enter the required information to get the prediction."
)
if __name__ == "__main__":
demo.launch()