import gradio as gr import joblib as jb import pandas as pd import numpy as np from functions import custom_encode, cria_feature #Importa os arquivos necessários top_50_mais_quebrados = pd.read_csv('top_50_mais_quebrados.csv') products_id = pd.read_csv('Unique Product ID.csv') #Importa os modelos de previsão e processamento de dados model_1 = jb.load('modelo 1.pkl') model_2 = jb.load('modelo 2.pkl') model_3 = jb.load('modelo 3.pkl') model_4 = jb.load('modelo 4.pkl') stack = jb.load('Stack.pkl') pipeline = jb.load('pipeline.pkl') def predict(product_id,air_temperature,process_temperature,rotational_speed,torque,tool_wear,TWF,HDF,PWF,OSF,RNF): type = products_id.loc[products_id['Product ID'] == product_id]['Type'].values[0] base = {'Product ID':[product_id], 'Type':[type], 'Air temperature [K]':[int(air_temperature)], 'Process temperature [K]':[int(process_temperature)], 'Rotational speed [rpm]':[int(rotational_speed)], 'Torque [Nm]':[int(torque)], 'Tool wear [min]':[int(tool_wear)], 'TWF':[int(TWF)], 'HDF':[int(HDF)], 'PWF':[int(PWF)], 'OSF':[int(OSF)], 'RNF':[int(RNF)]} input = pd.DataFrame(data=base) input['Product ID'] = custom_encode(top_50_mais_quebrados,input['Product ID']) input = cria_feature(input) input = pipeline.transform(input) preds = np.zeros((1,4)) preds[:, 0] = model_1.predict_proba(input)[:,1] preds[:, 1] = model_2.predict_proba(input)[:,1] preds[:, 2] = model_3.predict_proba(input)[:,1] preds[:, 3] = model_4.predict_proba(input)[:,1] pred_return = preds.mean(axis=1) return {"Will Not Fail": float(1-pred_return[0]), "Will Fail": float(pred_return[0])} # 'Product ID' 'Type' 'Air temperature [K]' 'Process temperature [K]' 'Rotational speed [rpm]' 'Torque [Nm]' 'Tool wear [min]' 'TWF' 'HDF' 'PWF' 'OSF' 'RNF' demo = gr.Interface(fn = predict, inputs=[gr.Dropdown(choices=products_id['Product ID'].to_list(),type='value',label='Product ID'), gr.Number(label='Air temperature [K]'), gr.Number(label='Process temperature [K]'), gr.Number(label='Rotational speed [RPM]'), gr.Number(label='Torque [Nm]'), gr.Number(label='Tool wear [min]'), gr.Dropdown(choices=['1','0'],type='value',label='TWF'), gr.Dropdown(choices=['1','0'],type='value',label='HDF'), gr.Dropdown(choices=['1','0'],type='value',label='PWF'), gr.Dropdown(choices=['1','0'],type='value',label='OSF'), gr.Dropdown(choices=['1','0'],type='value',label='RNF') ], outputs='label', examples=[ ['L52498',330,330,1345,70,196,'0','0','0','0','0'], ['H34252',330,330,1345,150,240,'0','0','0','0','0'], ['M20199',330,330,1345,20,55,'0','1','0','0','0'], ] ) demo.launch()