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 = "Clasificador del sexo de buitre negro" description = """ Esta aplicación se ha creado para clasificar el sexo de las arpías completamente desarrolladas. Para ello basta con medir, en milímetros, la longitud, la altura del pico, la longitud de la cola, el peso o la longitud total. Todas estas variables tienen han mostrado, para la base de datos que tenemos, una precisión del 100% pero eso no indica que sean infalibles. Cómo introducir los datos: Punto 1: las medidas del pico se meten en MILÍMETROS. Punto 2: las medidas de la cola y la longitud total se meten en CENTÍMETROS. Punto 3: el peso se mete en gramos. Punto 4: para los decimales se usan 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()