File size: 2,358 Bytes
ed0886e
e48ec4b
d31f6d8
 
9fd5a83
d31f6d8
 
 
88ece84
d31f6d8
 
c1e59c3
 
 
 
 
 
 
 
 
 
 
 
 
 
d31f6d8
 
 
9fd5a83
d31f6d8
 
 
 
 
 
9fd5a83
 
 
22dd3bd
 
d31f6d8
8f5db64
d31f6d8
 
e5683b9
d31f6d8
e5683b9
d31f6d8
 
 
9fd5a83
c1e59c3
d7cf074
30a73ea
9fd5a83
042b90b
d7cf074
ac7c262
30456ac
92cbd4e
 
30a73ea
 
 
 
 
 
9fd5a83
d31f6d8
9fd5a83
d31f6d8
 
 
9fd5a83
 
 
8f5db64
 
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
import gradio as gr

def scaler_model_selector(variable):
    from joblib import load
    
    if variable == 'Longitud de pico':
        file_scaler = "scaler_longpico.pkl"
        file_model = "model_longpico.pkl"
        
    elif variable == 'Altura de pico':
        file_scaler = "scaler_altopico.pkl"
        file_model = "model_altopico.pkl" 

    elif variable == 'Cola':
        file_scaler = 'scaler_cola.pkl'
        file_model = 'model_cola.pkl' 
        
    elif variable == 'Peso':
        file_scaler = 'scaler_peso.pkl'
        file_model = 'model_peso.pkl'
        
    elif variable == 'Longitud total':
        file_scaler = 'scaler_longitudtotal.pkl'
        file_model = 'model_longitudtotal.pkl'  
 
 
    model = load(file_model) 
    scaler = load(file_scaler)
    
    return model, scaler

def classifier(measured_value, model, scaler):
    import numpy as np
        
    data = np.array([measured_value]).reshape(1, -1)
    data_scaled = scaler.transform(data)
    pred = model.predict(data_scaled)
    
    label = ['hembra', 'macho']
    sexo = label[pred[0]]
        
    return sexo


def complete_classification(variable, valor_medido):
    model, scaler = scaler_model_selector(variable)
    sexo = classifier(valor_medido, model, scaler)
    
    return sexo 
    

variables_opcionales = ['Longitud de pico', 'Altura de pico', 'Cola', 'Peso', 'Longitud total']

title = "Sexaje por biometría del águila arpía"
description = """
Esta aplicación se ha creado para clasificar el sexo de las arpías completamente desarrolladas. 
Para ello basta con tomar cualquiera de las siguientes medidas: longitud de pico, altura del pico, longitud de cola, peso o longitud total. 
Los modelos generados a partir de estas variables han mostrado una precisión del 100%, pero eso no indica que sean infalibles.

Instrucciones para introducir los datos correctamente:  

    1. Longitud de pico en milímetros.
    2. Altura de pico en milímetros.
    3. Cola en centímetros.
    4. Peso en gramos.
    5. Longitud total en centímetros.
    6. Los decimales se indican usando puntos "." o comas ",". Nada más, ¿estamos?

"""
demo = gr.Interface(
    fn=complete_classification,
    inputs=[gr.Radio(variables_opcionales),
            gr.Number()],
    outputs="text",
    title=title,
    description=description
)
demo.launch()