Exercícios 4

Aula 4

1) Workflow

Para esse exercício, será necessário carregar alguns dados que já vimos sobre o clima em São Bernardo do Campo (SP):

link <- "https://raw.githubusercontent.com/jacobwright32/Web_Scraper_AI_Core_Project/bb4865ae568e23ab8fadb6ea58cf117df2164ef3/web%20scraping/Cleaned%20Data/Brazil_Sao%20Bernardo%20Do%20Campo_Cleaned.csv"
dados <- readr::read_csv(link)
import pandas as pd

link = 'https://raw.githubusercontent.com/jacobwright32/Web_Scraper_AI_Core_Project/bb4865ae568e23ab8fadb6ea58cf117df2164ef3/web%20scraping/Cleaned%20Data/Brazil_Sao%20Bernardo%20Do%20Campo_Cleaned.csv'
c = pd.read_csv(link)

Também usaremos, de ponta a ponta, os frameworks que estamos estudando. Para rodar um modelo de regressão OLS com partição da amostra entre teste e treino, podemos usar:

library(mlr3verse)

# Seleciona a tarefa e o modelo
tsk <- as_task_regr(humidity ~ maximum_temprature + wind_speed, data = dados)
learner <- lrn("regr.lm")

# Define estrategia de separacao da amostra
resampling <- rsmp("holdout", ratio = 0.7)

# Treina o modelo
resultados <- resample(tsk, learner, resampling)

# Avalia predicoes
measure <- msr(c("regr.mse")) # MSE
resultados$score(measure, ids = FALSE, predict_sets = "test")
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# Seleciona preditores e Y
X = c[['wind_speed', 'maximum_temprature']]
Y = c.humidity

# Holdout
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3)

# Treina o modelo e checa erros
reg = LinearRegression().fit(X_train, Y_train)
pred = reg.predict(X_test)
mean_squared_error(Y_test, pred) # MSE

a) Treino

Treine modelos lineares (OLS) usando a combinação de variáveis que você achar melhor.

b) Métricas

Usando o modelo treinado anterioremente, calcule diferentes métricas de validação.

c) Função

Crie uma função que rode esse workflow inteiro e retorne apenas uma métrica de validação. Rode essa função 100 vezes e reporte os resultados (como quiser, com gráfico ou outros).

d) Ajuste

Usando a função anterior, teste diferentes combinações de variáveis no modelo para achar um que tenha uma boa performance.

2) Regularização

Para esse exercício, serão necessários os seguintes algoritmos:

learner <- lrn("regr.glmnet", alpha = 1) # Lasso
# Ou
learner <- lrn("regr.glmnet", alpha = 0) # RIDGE
from sklearn.linear_model import Ridge
from sklearn.linear_model import Lasso

a) Regularização

Usando a mesma base de dados, adapte seu workflow anterior para, em vez de usar regressão linear, estimar modelos LASSO e Ridge.

b) Funções

Crie uma função para estimar LASSO e Ridge e compare os resultados de 100 execuções.

3) Regulação e transformação de preditores

Para este exercício, será necessário carregar os seguintes dados com resultados do segundo turno de 2018 por município no Brasil:

link <- "https://raw.githubusercontent.com/FLS-6497/datasets/main/aula4/eleicoes_mun_2018.csv"
elei18 <- readr::read_csv2(link)
import pandas as pd

link = 'https://raw.githubusercontent.com/FLS-6497/datasets/main/aula4/eleicoes_mun_2018.csv'
elei18 = pd.read_csv(link, sep=';')

a) Transformações básicas

Crie uma nova variável que indique o percentual de votos válidos de Bolsonaro (dica: basta dividir votos_bolsonaro_2t_2018 por votos_validos_2t_2018)

b) Exploração

Crie alguns gráficos pra explorar a relação entre a votação de Bolsonaro e algumas das variáveis do banco (faça como quiser, e quantos gráficos quiser).

c) Modelos

Rode modelos lineares, com e sem regularização, para tentar predizer a votação de Bolsonaro nos municípios usando variáveis como regiao, semiarido, capital, pib_total.

d) Transformações

Transforme a variável pib_total para que ela fique estandardizada (vale ser criativo e explorar outras variáveis do banco).