Ariussabaramondo's picture
Rename README.md to app.py
a5862c5 verified
# Fonction de prédiction
import gradio as gr
import joblib
import pandas as pd
import numpy as np
from keras.models import load_model
# importer les encodeurs
encoders = joblib.load(f'encoders.joblib')
#for i in range(len(cat_data.columns)):
#encoders.append(joblib.load(f'{cat_data.columns[i]}_encoder.joblib'))
# importer le modèle
model = load_model('DNN_model.h5')
# importer le scaler
scaler = joblib.load('scaler.joblib')
# Fonction de prédiction simple
def prediction_func(age, job, marital, education, default, housing, loan, contact, month, day_of_week, duration, campaign, pdays, previous, poutcome):
# encoder les valeurs
job = encoders[0].transform([job])[0]
marital = encoders[1].transform([marital])[0]
education = encoders[2].transform([education])[0]
default = encoders[3].transform([default])[0]
housing = encoders[4].transform([housing])[0]
loan = encoders[5].transform([loan])[0]
contact = encoders[6].transform([contact])[0]
month = encoders[7].transform([month])[0]
day_of_week = encoders[8].transform([day_of_week])[0]
poutcome = encoders[9].transform([poutcome])[0]
# vecteur des valeurs
x_new = np.array([age, job, marital, education, default, housing, loan, contact, month, day_of_week, duration, campaign, pdays, previous, poutcome]).reshape(1, -1)
# normaliser les valeurs
x_new = scaler.transform(x_new)
# prédire la valeur
y_pred = np.round(model.predict(x_new))
# retourner
if y_pred == 1:
return 'Souscrire'
else:
return 'Pas souscrire'
# load les valeurs uniques
# importer les uniques
uniques = joblib.load(f'uniques.joblib')
#for i in range(len(cat_data.columns)):
#uniques.append(joblib.load(f'{cat_data.columns[i]}_unique.joblib'))
# créer les inputs
inputs = [gr.Number(label="age"),
gr.Dropdown(uniques[0], label="job"),
gr.Dropdown(uniques[1], label="marital"),
gr.Dropdown(uniques[2], label="education"),
gr.Dropdown(uniques[3], label="default"),
gr.Dropdown(uniques[4], label="housing"),
gr.Dropdown(uniques[5], label="loan"),
gr.Dropdown(uniques[6], label="contact"),
gr.Dropdown(uniques[7], label="month"),
gr.Dropdown(uniques[8], label="day_of_week"),
gr.Number(label="duration"),
gr.Number(label="campaign"),
gr.Number(label="pdays"),
gr.Number(label="previous"),
gr.Dropdown(uniques[9], label="poutcome")]
# créer les outputs
outputs = gr.Textbox(label = 'Souscription')
# Interface
Interface =gr.Interface(fn = prediction_func,
inputs = inputs,
outputs = outputs,
title = 'Bank Marketing Prediction', theme='earneleh/paris')
Interface.launch()