Spaces:
Sleeping
Sleeping
import gradio as gr | |
import pandas as pd | |
import pickle | |
import os | |
MAIN_FOLDER = os.path.dirname(__file__) | |
# Define params names | |
PARAMS_NAME = [ | |
'orderAmount', | |
'orderState', | |
'paymentMethodRegistrationFailure', | |
'paymentMethodType', | |
'paymentMethodProvider', | |
'paymentMethodIssuer', | |
'transactionAmount', | |
'transactionFailed', | |
'emailDomain', | |
'emailProvider', | |
'customerIPAddressSimplified', | |
'sameCity', | |
] | |
# Load model | |
with open("model/modelo_proyecto_final.pkl", "rb") as f: | |
model = pickle.load(f) | |
# Columnas | |
COLUMNS_PATH = "model/categories_ohe_without_fraudulent.pickle" | |
with open(COLUMNS_PATH, 'rb') as handle: | |
ohe_tr = pickle.load(handle) | |
# ver como queda el encadenado de las carpetas | |
BINS_ORDER=os.path.join(MAIN_FOLDER,"model/saved_bins_order.pickle") | |
with open (BINS_ORDER, 'rb') as handle: | |
new_saved_bins_order=pickle.load(handle) | |
BINS_TRANSACTION=os.path.join(MAIN_FOLDER, "model/saved_bins_transaction.pickle") | |
with open (BINS_TRANSACTION, 'rb') as handle: | |
new_saved_bins_transaction=pickle.load(handle) | |
def predict(*args): | |
answer_dict = {} | |
for i in range(len(PARAMS_NAME)): | |
answer_dict[PARAMS_NAME[i]] = [args[i]] | |
single_instance = pd.DataFrame.from_dict(answer_dict) | |
single_instance["orderAmount"]=single_instance["orderAmount"].astype(float) | |
single_instance["orderAmount"]=pd.cut(single_instance["orderAmount"], | |
bins=new_saved_bins_order, | |
include_lowest=True) | |
single_instance["transactionAmount"]=single_instance["transactionAmount"].astype(int) | |
single_instance["transactionAmount"]=pd.cut(single_instance["transactionAmount"], | |
bins=new_saved_bins_order, | |
include_lowest=True) | |
# Reformat columns | |
single_instance_ohe = pd.get_dummies(single_instance).reindex(columns = ohe_tr).fillna(0) | |
prediction = model.predict(single_instance_ohe) | |
type_of_fraud=int(prediction[0]) | |
response = {"tipo de fraude":type_of_fraud} | |
# Adaptación respuesta | |
response = "Error parsing value" | |
if type_of_fraud == 0: | |
response = "No fraud" | |
if type_of_fraud == 1: | |
response = "Fraud" | |
if type_of_fraud == 2: | |
response = "Revisar" | |
return response | |
with gr.Blocks() as demo: | |
gr.Markdown( | |
""" | |
# DETECTION OF FRAUD 🔧🚜 | |
""" | |
) | |
with gr.Row(): | |
with gr.Column(): | |
gr.Markdown( | |
""" | |
## Predecir Fraude. | |
""" | |
) | |
orderState = gr.Radio( | |
label="estado orden", | |
choices=["pending", "fulfilled", "failed"], | |
value="pending" | |
) | |
paymentMethodRegistrationFailure=gr.Radio( | |
label="failure payment method", | |
choices=["True", "False"], | |
value="True" | |
) | |
paymentMethodType=gr.Radio( | |
label="metodo pago", | |
choices=["card", "apple pay", "paypal", "bitcoin"], | |
value="card" | |
) | |
paymentMethodProvider=gr.Radio( | |
label="proveedor pago", | |
choices=["JCB 16 digit","VISA 16 digit","Voyager","Diners Club / Carte Blanche","Maestro","VISA 13 digit","Discover","American Express","JCB 15 digit","Mastercard"], | |
value="Mastercard" | |
) | |
paymentMethodIssuer=gr.Radio( | |
label="emisor", | |
choices=["Her Majesty Trust","Vertex Bancorp","Fountain Financial Inc.","His Majesty Bank Corp.","Bastion Banks","Bulwark Trust Corp.","Citizens First Banks","Grand Credit Corporation","Solace Banks","Rose Bancshares","B","e","c","r","n","x","o","a","p"], | |
value="o" | |
) | |
transactionFailed=gr.Radio( | |
label="transacion fallida", | |
choices=["True", "False"], | |
value="True" | |
) | |
emailDomain=gr.Radio( | |
label="dominio", | |
choices=["weird","com","biz","org","net","info"], | |
value="weird" | |
) | |
emailProvider=gr.Radio( | |
label="proveedor", | |
choices=["weird","ohter","gmail","yahoo","hotmail"], | |
value="weird" | |
) | |
customerIPAddressSimplified=gr.Radio( | |
label="ip", | |
choices=["only letters","digits_and_letters"], | |
value="only letters" | |
) | |
sameCity=gr.Radio( | |
label="misma ciudad", | |
choices=["unknown","no","yes"], | |
value="yes" | |
) | |
orderAmount = gr.Slider(label="Order Amount", minimum=0, maximum=1000, step=1, randomize=True) | |
transactionAmount=gr.Slider(label="Transaction Amount", minimum=0, maximum=1000, step=1, randomize=True) | |
with gr.Column(): | |
gr.Markdown( | |
""" | |
## Predicción | |
""" | |
) | |
label = gr.Label(label="Fraud_detection") | |
predict_btn = gr.Button(value="Evaluar") | |
predict_btn.click( | |
predict, | |
inputs=[ | |
orderAmount, | |
orderState, | |
paymentMethodRegistrationFailure, | |
paymentMethodType, | |
paymentMethodProvider, | |
paymentMethodIssuer, | |
transactionAmount, | |
transactionFailed, | |
emailDomain, | |
emailProvider, | |
customerIPAddressSimplified, | |
sameCity, | |
], | |
outputs=[label], | |
) | |
gr.Markdown( | |
""" | |
<p style='text-align: center'> | |
<a href='https://www.escueladedatosvivos.ai/cursos/bootcamp-de-data-science' | |
target='_blank'>Proyecto demo creado en el bootcamp de EDVAI 🤗 | |
</a> | |
</p> | |
""" | |
) | |
demo.launch() | |