MiguelCh's picture
Update app.py
a43a787 verified
import gradio as gr
import numpy as np
import pickle
# Cargar el modelo
with open('model_rf.pkl', 'rb') as file:
rf = pickle.load(file)
# Cargar el scaler
with open('my-standard-scaler.pkl', 'rb') as file:
s_c = pickle.load(file)
# Definir la funci贸n de predicci贸n
def predict_1(SOC: float):
SOC = SOC/1.724 # SOC <- MO/1.724
prediction = 1.58 + np.exp(-0.07*SOC)
return prediction.round(2)
def predict_2(SOC: float, Cy: float):
SOC = SOC/1.724 # SOC <- MO/1.724
prediction = np.array(2.03 - 0.008*Cy - 0.008*SOC)
return prediction.round(2)
def predict_3(SOC: float, Cy: float, eCa: float, eMg: float, eK: float, eNa: float, eAlH: float):
SOC = SOC/1.724 # SOC <- MO/1.724
ECEC = eCa + eMg + eK + eNa + eAlH
xK = eK/ECEC
prediction = np.array(1.53 - 0.076*SOC + 0.004*Cy - 2.04*xK)
return prediction.round(2)
def predict_4(pH: float, EC: float, CCE: float, SOC: float, Sa: float, Si: float,
Cy: float, CEC: float, eCa: float, eMg: float, eK: float, eNa: float, eAlH: float):
SOC = SOC/1.724 # SOC <- MO/1.724
ECEC = eCa + eMg + eK + eNa + eAlH
xCa = eCa/ECEC
xMg = eMg/ECEC
xK = eK/ECEC
xNa = eNa/ECEC
xAlH = eAlH/ECEC
BS1 = (eCa + eMg + eK + eNa)/CEC
BS2 = (eCa + eMg + eK + eNa)/ECEC
input_features = np.array([[pH, EC, CCE, SOC, Sa, Si, Cy, CEC, ECEC, xCa, xMg, xK, xNa, xAlH, BS1, BS2]])
input_features_scale = s_c.transform(input_features)
prediction = rf.predict(input_features_scale)[0].round(2)
return prediction
# <img src="https://www.wycia.com/wp-content/uploads/2016/09/LOGO-PUCP.jpg" width=200px>
# Crear la interfaz Gradio
with gr.Blocks() as demo:
#with gr.Row():
# with gr.Column():
# gr.Markdown("""<img src="https://www.wycia.com/wp-content/uploads/2016/09/LOGO-PUCP.jpg" width=250px>""")
# with gr.Column():
# gr.Markdown("""<img src="https://prociencia.gob.pe/wp-content/uploads/2022/05/PROCIENCIA-LOGO-300x169.png" width=200px>""")
# with gr.Column():
# gr.Markdown("""<img src="https://i.ibb.co/k8LxVMT/images.jpg" width=150px>""")
#gr.Markdown("""<img src="https://www.wycia.com/wp-content/uploads/2016/09/LOGO-PUCP.jpg" width=1000px height=250px >""")
gr.Markdown("""<img src="https://i.ibb.co/dJB3MTX/banner-v1.png" width=1000px >""")
#gr.Markdown("""<img src="https://drive.google.com/uc?export=view&id=1kmnKJcF0QIqxVDsqGcENmVe1qZJqV96m" width=1000px >""")
gr.Markdown("# Estimaci贸n de la densidad aparente del suelo")
with gr.Row():
with gr.Column(scale=0, min_width=250):
gr.Markdown("**M.O. (%)**")
SOC = gr.Number(label="", value=2.9408, interactive=True, elem_classes="bold-label")
gr.Markdown("**K<sup>+</sup> (meq/100g)**")
eK = gr.Number(label="", value=0.47, interactive=True)
gr.Markdown("**pH (1:1) en H<sub>2</sub>O**")
pH = gr.Number(label="", value=7.09, interactive=True)
gr.Markdown("**C.E. (1:1 dS/m)**")
EC = gr.Number(label="", value=0.31, interactive=True)
with gr.Column(scale=0, min_width=250):
gr.Markdown("**Arcilla (%)**")
Cy = gr.Number(label="", value=31.0, interactive=True)
gr.Markdown("**Na<sup>+</sup> (meq/100g)**")
eNa = gr.Number(label="", value=0.15, interactive=True)
gr.Markdown("**CaCO<sub>2</sub> (%)**")
CCE = gr.Number(label="", value=0.20, interactive=True)
with gr.Column(scale=0, min_width=250):
gr.Markdown("**Ca<sup>2+</sup> (meq/100g)**")
eCa = gr.Number(label="", value=19.44, interactive=True)
gr.Markdown("**Al<sup>3+</sup> + H<sup>+</sup> (meq/100g)**")
eAlH = gr.Number(label="", value=0.0, interactive=True)
gr.Markdown("**Limo (%)**")
Si = gr.Number(label="", value=24.0, interactive=True)
with gr.Column(scale=0, min_width=250):
gr.Markdown("**Mg<sup>2+</sup> (meq/100g)**")
eMg = gr.Number(label="", value=3.47, interactive=True)
gr.Markdown("**Arena (%)**")
Sa = gr.Number(label="", value=45.0, interactive=True)
gr.Markdown("**CIC (meq/100g)**")
CEC = gr.Number(label="", value=23.52, interactive=True)
gr.Markdown("Seleccione un modelo:")
with gr.Row():
with gr.Column(scale=0, min_width=250):
submit_1 = gr.Button(value='Abdelbaki')
with gr.Column(scale=0, min_width=250):
submit_2 = gr.Button(value='Benites')
with gr.Column(scale=0, min_width=250):
submit_3 = gr.Button(value='MLRegression')
with gr.Column(scale=0, min_width=250):
submit_4 = gr.Button(value='Random Forest')
gr.Markdown("Densidad aparente del suelo (g/cm<sup>3</sup>):")
output = gr.Textbox(label="", interactive=False)
submit_1.click(predict_1, inputs=[SOC], outputs=[output])
submit_2.click(predict_2, inputs=[SOC, Cy], outputs=[output])
submit_3.click(predict_3, inputs=[SOC, Cy, eCa, eMg, eK, eNa, eAlH], outputs=[output])
submit_4.click(predict_4, inputs=[pH , EC, CCE, SOC, Sa, Si, Cy, CEC, eCa, eMg, eK, eNa, eAlH], outputs=[output])
demo.launch(share=False, debug=False)