vtreat em um pequeno exemplo
Neste exercício, você vai usar vtreat para fazer one-hot-encoding de uma variável categórica em um pequeno exemplo.
vtreat cria um plano de tratamento para transformar variáveis categóricas em variáveis indicadoras (codificadas como "lev") e para limpar valores ruins de variáveis numéricas (codificadas como "clean").
Para criar um plano de tratamento use a função designTreatmentsZ() (docs)
treatplan <- designTreatmentsZ(data, varlist)
data: o data frame de treinamento originalvarlist: um vetor de variáveis de entrada a serem tratadas (como strings).
designTreatmentsZ() retorna uma lista com um elemento scoreFrame: um data frame que inclui os nomes e tipos das novas variáveis:
scoreFrame <- treatplan %>%
magrittr::use_series(scoreFrame) %>%
select(varName, origName, code)
varName: o nome da nova variável tratadaorigName: o nome da variável original da qual a variável tratada se originacode: o tipo da nova variável."clean": uma variável numérica sem NAs ou NaNs"lev": uma variável indicadora para um nível específico da variável categórica original.
(magrittr::use_series() (docs) é um alias para $ que você pode usar em pipes.)
Para estes exercícios, queremos varName onde code seja "clean" ou "lev":
newvarlist <- scoreFrame %>%
filter(code %in% c("clean", "lev") %>%
magrittr::use_series(varName)
Para transformar o conjunto de dados em variáveis totalmente numéricas e one-hot-encoded, use prepare() (docs):
data.treat <- prepare(treatplan, data, varRestrictions = newvarlist)
treatplan: o plano de tratamentodata: o data frame a ser tratadovarRestrictions: as variáveis desejadas nos dados tratados
O data frame dframe e o pacote magrittr já foram pré-carregados.
Este exercício faz parte do curso
Aprendizado Supervisionado em R: Regressão
Instruções do exercício
- Imprima
dframe. Vamos supor quecoloresizesão variáveis de entrada, epopularityé o desfecho a ser previsto. - Crie um vetor chamado
varscom os nomes das variáveis de entrada (como strings). - Carregue o pacote
vtreat. - Use
designTreatmentsZ()para criar um plano de tratamento para as variáveis emvars. Atribua-o à variáveltreatplan. - Obtenha e examine o
scoreFramedo plano de tratamento para ver o mapeamento das variáveis antigas para as novas.- Você só precisa das colunas
varName,origNameecode. - Quais são os nomes das novas variáveis indicadoras? E da variável contínua?
- Você só precisa das colunas
- Crie um vetor
newvarsque contenha a variávelvarNameondecodesejacleanoulev. Imprima-o. - Use
prepare()para criar um novo data framedframe.treatque seja uma versão one-hot-encoded dedframe(sem a coluna de desfecho).- Imprima-o e compare com
dframe.
- Imprima-o e compare com
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# Print dframe
dframe
# Create and print a vector of variable names
(vars <- ___)
# Load the package vtreat
___
# Create the treatment plan
treatplan <- ___(___, ___)
# Examine the scoreFrame
(scoreFrame <- treatplan %>%
use_series(scoreFrame) %>%
select(___, ___, ___))
# We only want the rows with codes "clean" or "lev"
(newvars <- scoreFrame %>%
filter(code %in% ___) %>%
use_series(varName))
# Create the treated training data
(dframe.treat <- ___(___, ___, varRestriction = newvars))