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()