Skip to content

Instantly share code, notes, and snippets.

@samuellangajr
Created March 12, 2025 18:52
Show Gist options
  • Save samuellangajr/000d9dce4f962eee6ebd7ce32a13c2ca to your computer and use it in GitHub Desktop.
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.
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