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( """
""" ) demo.launch()