vtreat sur un petit exemple
Dans cet exercice, vous utiliserez 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 (code "lev") et pour nettoyer les mauvaises valeurs dans les variables numériques (code "clean").
Pour concevoir un plan de traitement, utilisez la fonction designTreatmentsZ() (docs)
treatplan <- designTreatmentsZ(data, varlist)
data: la trame de données d'entraînement originalevarlist: un vecteur de variables d'entrée à traiter (en chaînes de caractères).
designTreatmentsZ() renvoie une liste contenant un élément scoreFrame : une trame de données 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 originale 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 précis de la variable catégorielle originale.
(magrittr::use_series() (docs) est un alias de $ que vous pouvez utiliser dans des enchaînements.)
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 l'ensemble 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: la trame de données à traitervarRestrictions: les variables souhaitées dans les données traitées
La trame de données dframe et le paquet magrittr ont été préchargés.
Cette activité fait partie du cours
Apprentissage supervisé en R : régression
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 nommé
varsavec les noms des variables d'entrée (en chaînes de caractères). - Chargez le paquet
vtreat. - Utilisez
designTreatmentsZ()pour créer un plan de traitement pour les variables devars. Assignez-le à la variabletreatplan. - Obtenez et examinez le
scoreFramedu plan de traitement pour voir la correspondance entre les anciennes et les nouvelles variables.- Vous n'avez besoin que des colonnes
varName,origNameetcode. - Quels sont les noms des nouvelles variables indicatrices ? De la variable continue ?
- Vous n'avez besoin que des colonnes
- Créez un vecteur
newvarsqui contient la variablevarNamelorsquecodeest soitcleansoitlev. Affichez-le. - Utilisez
prepare()pour créer une nouvelle trame de donnéesdframe.treatqui est une version one-hot-encodée dedframe(sans la colonne cible).- Affichez-la et comparez avec
dframe.
- Affichez-la et comparez avec
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))