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):
<- "https://raw.githubusercontent.com/jacobwright32/Web_Scraper_AI_Core_Project/bb4865ae568e23ab8fadb6ea58cf117df2164ef3/web%20scraping/Cleaned%20Data/Brazil_Sao%20Bernardo%20Do%20Campo_Cleaned.csv"
link <- readr::read_csv(link) dados
import pandas as pd
= 'https://raw.githubusercontent.com/jacobwright32/Web_Scraper_AI_Core_Project/bb4865ae568e23ab8fadb6ea58cf117df2164ef3/web%20scraping/Cleaned%20Data/Brazil_Sao%20Bernardo%20Do%20Campo_Cleaned.csv'
link = pd.read_csv(link) c
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
<- as_task_regr(humidity ~ maximum_temprature + wind_speed, data = dados)
tsk <- lrn("regr.lm")
learner
# Define estrategia de separacao da amostra
<- rsmp("holdout", ratio = 0.7)
resampling
# Treina o modelo
<- resample(tsk, learner, resampling)
resultados
# Avalia predicoes
<- msr(c("regr.mse")) # MSE
measure $score(measure, ids = FALSE, predict_sets = "test") resultados
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
= c[['wind_speed', 'maximum_temprature']]
X = c.humidity
Y
# Holdout
= train_test_split(X, Y, test_size=0.3)
X_train, X_test, Y_train, Y_test
# Treina o modelo e checa erros
= LinearRegression().fit(X_train, Y_train)
reg = reg.predict(X_test)
pred # MSE mean_squared_error(Y_test, pred)
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:
<- lrn("regr.glmnet", alpha = 1) # Lasso
learner # Ou
<- lrn("regr.glmnet", alpha = 0) # RIDGE learner
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:
<- "https://raw.githubusercontent.com/FLS-6497/datasets/main/aula4/eleicoes_mun_2018.csv"
link <- readr::read_csv2(link) elei18
import pandas as pd
= 'https://raw.githubusercontent.com/FLS-6497/datasets/main/aula4/eleicoes_mun_2018.csv'
link = pd.read_csv(link, sep=';') elei18
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).