File size: 3,356 Bytes
c5c9dba
 
 
 
 
 
 
 
 
 
 
 
 
a3d8df2
 
 
 
93b3457
70716fb
a3d8df2
 
3440d60
93b3457
 
70716fb
a3d8df2
 
 
c5c9dba
 
 
 
 
 
 
 
 
93b3457
c5c9dba
 
 
 
 
 
8aeb5ef
4ec5db2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a348b27
a3d8df2
 
 
 
 
 
 
 
 
c5c9dba
a3d8df2
 
 
93b3457
a3d8df2
c5c9dba
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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):
    prediction = 1.58 + np.exp(-0.07*SOC)
    return prediction.round(2)

def predict_2(SOC: float, Cy: float):
    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, eAlH: float):
    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):
    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

# Crear la interfaz Gradio
with gr.Blocks() as demo:
    gr.Markdown("# Estima el valor del soil-bulk-density")
    with gr.Row():
        with gr.Column():
            pH = gr.Number(label="pH (--)", value=7.09, interactive=True)
            EC = gr.Number(label="Ec (--)", value=0.31, interactive=True)
            CCE = gr.Number(label="CCE (--)", value=0.20, interactive=True)
            eMg = gr.Number(label="eMg (--)", value=3.47, interactive=True)
            eAlH = gr.Number(label="eAlH (--)", value=0.0, interactive=True)
        with gr.Column():
            SOC = gr.Number(label="SOC (--)", value=2.9408, interactive=True)
            Sa = gr.Number(label="Sa (--)", value=45.0, interactive=True)
            Si = gr.Number(label="Si (--)", value=24.0, interactive=True)
            eK = gr.Number(label="eK (--)", value=0.47, interactive=True)
        with gr.Column():
            Cy = gr.Number(label="Cy (--)", value=31.0, interactive=True)
            CEC = gr.Number(label="CEC (--)", value=23.52, interactive=True)
            eCa = gr.Number(label="eCa (--)", value=19.44, interactive=True)
            eNa = gr.Number(label="eNa (--)", value=0.15, interactive=True)

    with gr.Row():
        with gr.Column():
            submit_1 = gr.Button(value='Abdelbaki')
        with gr.Column():
            submit_2 = gr.Button(value='Benites')
        with gr.Column():
            submit_3 = gr.Button(value='MLRegression')
        with gr.Column():
            submit_4 = gr.Button(value='Random Forest')
    output = gr.Textbox(label=": soil bulk density", 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, 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)