CommencerCommencez gratuitement

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’origine
  • varlist : 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ée
  • origName : le nom de la variable d’origine dont provient la variable traitée
  • code : 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 traitement
  • data : le data frame à traiter
  • varRestrictions : 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>
Voir le cours

Instructions de l’exercice

  • Affichez dframe. Nous supposerons que color et size sont des variables d’entrée, et que popularity est la variable cible à prédire.
  • Créez un vecteur appelé vars contenant 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 dans vars. Assignez-le à la variable treatplan.
  • Récupérez et examinez le scoreFrame du plan de traitement pour voir la correspondance entre anciennes et nouvelles variables.
    • Vous n’avez besoin que des colonnes varName, origName et code.
    • Quels sont les noms des nouvelles variables indicatrices ? Et de la variable continue ?
  • Créez un vecteur newvars qui contient la variable varName lorsque code vaut clean ou lev. Affichez-le.
  • Utilisez prepare() pour créer un nouveau data frame dframe.treat qui est une version one-hot-encodée de dframe (sans la colonne cible).
    • Affichez-le et comparez-le à dframe.

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))
Modifier et exécuter le code