Aan de slagGa gratis aan de slag

vtreat op een klein voorbeeld

In deze oefening gebruik je vtreat om een categorische variabele te one-hot-encoden in een klein voorbeeld. vtreat maakt een treatmentplan om categorische variabelen om te zetten naar indicatorvariabelen (gecodeerd als "lev"), en om ongeldige waarden uit numerieke variabelen op te schonen (gecodeerd als "clean").

Gebruik de functie designTreatmentsZ() (docs) om een treatmentplan te ontwerpen

treatplan <- designTreatmentsZ(data, varlist)
  • data: het originele trainings-data frame
  • varlist: een vector met invoervariabelen die behandeld moeten worden (als strings).

designTreatmentsZ() retourneert een lijst met een element scoreFrame: een data frame met de namen en types van de nieuwe variabelen:

scoreFrame <- treatplan %>% 
            magrittr::use_series(scoreFrame) %>% 
            select(varName, origName, code)
  • varName: de naam van de nieuw behandelde variabele
  • origName: de naam van de oorspronkelijke variabele waar de behandelde variabele uit komt
  • code: het type van de nieuwe variabele.
    • "clean": een numerieke variabele zonder NA's of NaN's
    • "lev": een indicatorvariabele voor een specifiek niveau van de oorspronkelijke categorische variabele.

(magrittr::use_series() (docs) is een alias voor $ die je in pipes kunt gebruiken.)

Voor deze oefeningen willen we varName waar code "clean" of "lev" is:

newvarlist <- scoreFrame %>% 
             filter(code %in% c("clean", "lev") %>%
             magrittr::use_series(varName)

Om de gegevensset om te zetten naar volledig numeriek en one-hot-encoded, gebruik je prepare() (docs):

data.treat <- prepare(treatplan, data, varRestrictions = newvarlist)
  • treatplan: het treatmentplan
  • data: het data frame dat behandeld moet worden
  • varRestrictions: de gewenste variabelen in de behandelde data

Het dframe data frame en het pakket magrittr zijn al vooraf geladen.

Deze oefening maakt deel uit van de cursus

Supervised Learning in R: Regressie

Cursus bekijken

Oefeninstructies

  • Print dframe. We gaan ervan uit dat color en size de invoervariabelen zijn, en dat popularity de uitkomst is die je wilt voorspellen.
  • Maak een vector vars met de namen van de invoervariabelen (als strings).
  • Laad het pakket vtreat.
  • Gebruik designTreatmentsZ() om een treatmentplan te maken voor de variabelen in vars. Sla dit op in de variabele treatplan.
  • Haal de scoreFrame uit het treatmentplan op en bekijk deze om de mapping van oude naar nieuwe variabelen te zien.
    • Je hebt alleen de kolommen varName, origName en code nodig.
    • Wat zijn de namen van de nieuwe indicatorvariabelen? En van de continue variabele?
  • Maak een vector newvars die de variabele varName bevat waar code clean of lev is. Print deze.
  • Gebruik prepare() om een nieuw data frame dframe.treat te maken dat een one-hot-encoded versie van dframe is (zonder de uitkomstkolom).
    • Print dit en vergelijk met dframe.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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))
Code bewerken en uitvoeren