vtreat sur un petit exemple
Dans cet exercice, vous allez utiliser vtreat pour appliquer un one-hot-encoding à une variable catégorielle sur un petit exemple.
vtreat crée un plan de traitement pour transformer les variables catégorielles en variables indicatrices (codées "lev") et pour nettoyer les valeurs incorrectes des variables numériques (codées "clean").
Pour concevoir un plan de traitement, utilisez la fonction designTreatmentsZ() (docs)
treatplan <- designTreatmentsZ(data, varlist)
data: le data frame d’entraînement d’originevarlist: un vecteur de variables d’entrée à traiter (sous forme de chaînes de caractères).
designTreatmentsZ() renvoie une liste contenant un élément scoreFrame : un data frame qui inclut les noms et types des nouvelles variables :
scoreFrame <- treatplan %>%
magrittr::use_series(scoreFrame) %>%
select(varName, origName, code)
varName: le nom de la nouvelle variable traitéeorigName: le nom de la variable d’origine dont provient la variable traitéecode: le type de la nouvelle variable."clean": une variable numérique sans NA ni NaN"lev": une variable indicatrice pour un niveau spécifique de la variable catégorielle d’origine.
(magrittr::use_series() (docs) est un alias de $ que vous pouvez utiliser dans des pipes.)
Pour ces exercices, nous voulons varName lorsque code vaut "clean" ou "lev" :
newvarlist <- scoreFrame %>%
filter(code %in% c("clean", "lev") %>%
magrittr::use_series(varName)
Pour transformer le jeu de données en variables toutes numériques et one-hot-encodées, utilisez prepare() (docs) :
data.treat <- prepare(treatplan, data, varRestrictions = newvarlist)
treatplan: le plan de traitementdata: le data frame à traitervarRestrictions: les variables souhaitées dans les données traitées
Le data frame dframe et le package magrittr ont été préchargés.
Cet exercice fait partie du cours
<cours>Apprentissage supervisé en R : Régression</cours>Instructions de l’exercice
- Affichez
dframe. Nous supposerons quecoloretsizesont des variables d’entrée, et quepopularityest la variable cible à prédire. - Créez un vecteur appelé
varscontenant les noms des variables d’entrée (sous forme de chaînes). - Chargez le package
vtreat. - Utilisez
designTreatmentsZ()pour créer un plan de traitement pour les variables dansvars. Assignez-le à la variabletreatplan. - Récupérez et examinez le
scoreFramedu plan de traitement pour voir la correspondance entre anciennes et nouvelles variables.- Vous n’avez besoin que des colonnes
varName,origNameetcode. - Quels sont les noms des nouvelles variables indicatrices ? Et de la variable continue ?
- Vous n’avez besoin que des colonnes
- Créez un vecteur
newvarsqui contient la variablevarNamelorsquecodevautcleanoulev. Affichez-le. - Utilisez
prepare()pour créer un nouveau data framedframe.treatqui est une version one-hot-encodée dedframe(sans la colonne cible).- Affichez-le et comparez-le à
dframe.
- Affichez-le et comparez-le à
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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))