Spaces:
Runtime error
Runtime error
| # A importação do sklearn/LogisticRegression é necessária caso o modelo não carregue# PEQUENA ALTERAÇÃO PARA FORÇAR O BUILD | |
| import gradio as gr | |
| import pandas as pd | |
| import joblib | |
| import numpy as np | |
| from sklearn.linear_model import LogisticRegression | |
| # A importação do sklearn/LogisticRegression é necessária caso o modelo não carregue | |
| # --- 1. CARREGAR O MODELO --- | |
| # O NOME DO ARQUIVO DEVE SER EXATAMENTE o que você subiu (modelo_chuva_lr.joblib) | |
| MODEL_FILE = "modelo_chuva_lr.joblib" | |
| try: | |
| model = joblib.load(MODEL_FILE) | |
| print(f"Modelo de previsão carregado: {MODEL_FILE}") | |
| except Exception as e: | |
| print(f"ERRO ao carregar o modelo {MODEL_FILE}. Usando um placeholder. Erro: {e}") | |
| # Criação de um modelo placeholder caso o arquivo não seja encontrado | |
| model = LogisticRegression() | |
| X_fake = pd.DataFrame(np.random.rand(10, 5), columns=['TempMax', 'Umidade', 'Pressao', 'VelVento', 'Mes']) | |
| y_fake = np.random.randint(0, 2, 10) | |
| model.fit(X_fake, y_fake) | |
| # --- 2. FUNÇÃO DE PREVISÃO --- | |
| def prever_clima(temp_max, umidade_dia, pressao_dia, vel_vento, mes): | |
| """ | |
| Recebe as entradas do Gradio e retorna a previsão de chuva e probabilidade. | |
| """ | |
| # IMPORTANTE: A ordem das colunas e os nomes devem ser iguais aos do treinamento. | |
| input_data = pd.DataFrame({ | |
| 'TempMax': [temp_max], | |
| 'Umidade': [umidade_dia], | |
| 'Pressao': [pressao_dia], | |
| 'VelVento': [vel_vento], | |
| 'Mes': [mes] | |
| }) | |
| try: | |
| # Previsão de probabilidade da classe 1 (Chuva) | |
| prob_chuva = model.predict_proba(input_data)[:, 1][0] * 100 | |
| # Classificação final | |
| if prob_chuva > 50: | |
| resultado = "Sim, há **alta probabilidade** de chuva!" | |
| elif prob_chuva > 20: | |
| resultado = "Probabilidade moderada de chuva." | |
| else: | |
| resultado = "Não, a probabilidade de chuva é **baixa**." | |
| return resultado, f"{prob_chuva:.2f}%" | |
| except Exception as e: | |
| return f"Erro na previsão (Verifique os logs): {e}", "0.0%" | |
| # --- 3. DEFINIÇÃO DA INTERFACE GRADIO --- | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# 🌧️ Previsão de Chuvas (Modelo Simples)") | |
| gr.Markdown("Este é um modelo de demonstração treinado em dados simulados de temperatura, umidade, pressão, vento e mês do ano.") | |
| with gr.Row(): | |
| temp_max_input = gr.Slider(label="Temperatura Máxima Esperada (°C)", minimum=10, maximum=50, value=25, step=1) | |
| umidade_input = gr.Slider(label="Umidade Relativa do Ar (%)", minimum=0, maximum=100, value=65, step=1) | |
| with gr.Row(): | |
| pressao_input = gr.Slider(label="Pressão Atmosférica (hPa)", minimum=950, maximum=1050, value=1010, step=0.1) | |
| vel_vento_input = gr.Slider(label="Velocidade Média do Vento (km/h)", minimum=0, maximum=100, value=15, step=1) | |
| mes_input = gr.Slider(label="Mês do Ano (1=Jan, 12=Dez)", minimum=1, maximum=12, value=11, step=1) | |
| predict_btn = gr.Button("🔮 Prever Chuva", variant="primary") | |
| with gr.Row(): | |
| resultado_output = gr.Textbox(label="Veridicto", value="Aguardando dados...", interactive=False) | |
| prob_output = gr.Textbox(label="Probabilidade de Chuva", value="0.0%", interactive=False) | |
| predict_btn.click( | |
| fn=prever_clima, | |
| inputs=[temp_max_input, umidade_input, pressao_input, vel_vento_input, mes_input], | |
| outputs=[resultado_output, prob_output] | |
| ) | |
| demo.queue().launch() |