fersch's picture
Upload 6 files
586cd16 verified
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()