Created
March 12, 2025 18:52
-
-
Save samuellangajr/000d9dce4f962eee6ebd7ce32a13c2ca to your computer and use it in GitHub Desktop.
Implemente uma função que realize uma previsão de congestionamento com base em dados históricos. A função deve receber um dataframe com colunas 'hora', 'dia_semana', e 'volume_trafego', e retornar a probabilidade de congestionamento.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import pandas as pd | |
from sklearn.model_selection import train_test_split | |
from sklearn.linear_model import LogisticRegression | |
from sklearn.preprocessing import StandardScaler | |
from sklearn.metrics import accuracy_score | |
def prever_congestionamento(df): | |
""" | |
Previsão de congestionamento com base em dados históricos de tráfego. | |
Args: | |
df (pd.DataFrame): DataFrame contendo 'hora', 'dia_semana' e 'volume_trafego'. | |
Returns: | |
probabilidade (float): Probabilidade de congestionamento. | |
""" | |
# Definir variável de entrada (X) e alvo (y) | |
X = df[['hora', 'dia_semana', 'volume_trafego']] | |
# Criar a variável alvo (0 = sem congestionamento, 1 = congestionamento) | |
# Aqui, vamos definir uma lógica simples para o congestionamento: | |
# Se o volume de tráfego for superior a 80, consideramos que há congestionamento. | |
y = (df['volume_trafego'] > 80).astype(int) | |
# Normalizar os dados de entrada | |
scaler = StandardScaler() | |
X_scaled = scaler.fit_transform(X) | |
# Dividir os dados em treino e teste | |
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42) | |
# Criar e treinar o modelo de regressão logística | |
modelo = LogisticRegression() | |
modelo.fit(X_train, y_train) | |
# Fazer previsões no conjunto de teste | |
y_pred = modelo.predict(X_test) | |
# Avaliar a acurácia do modelo | |
acuracia = accuracy_score(y_test, y_pred) | |
print(f'Acurácia do modelo: {acuracia:.2f}') | |
# Prever a probabilidade de congestionamento para a última entrada no DataFrame | |
probabilidade = modelo.predict_proba([X_scaled[-1]])[0][1] | |
return probabilidade | |
# Exemplo de uso: | |
# Criar um DataFrame de exemplo com dados fictícios | |
data = { | |
'hora': [8, 9, 10, 11, 12, 13, 14, 15, 16, 17], | |
'dia_semana': [0, 1, 2, 3, 4, 5, 6, 0, 1, 2], | |
'volume_trafego': [70, 85, 60, 50, 55, 95, 80, 75, 90, 100] | |
} | |
df = pd.DataFrame(data) | |
# Prever o congestionamento | |
probabilidade_congestionamento = prever_congestionamento(df) | |
print(f'Probabilidade de congestionamento: {probabilidade_congestionamento:.2f}') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment