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 framevarlist: 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 variabeleorigName: de naam van de oorspronkelijke variabele waar de behandelde variabele uit komtcode: 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 treatmentplandata: het data frame dat behandeld moet wordenvarRestrictions: 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
Oefeninstructies
- Print
dframe. We gaan ervan uit datcolorensizede invoervariabelen zijn, en datpopularityde uitkomst is die je wilt voorspellen. - Maak een vector
varsmet de namen van de invoervariabelen (als strings). - Laad het pakket
vtreat. - Gebruik
designTreatmentsZ()om een treatmentplan te maken voor de variabelen invars. Sla dit op in de variabeletreatplan. - Haal de
scoreFrameuit het treatmentplan op en bekijk deze om de mapping van oude naar nieuwe variabelen te zien.- Je hebt alleen de kolommen
varName,origNameencodenodig. - Wat zijn de namen van de nieuwe indicatorvariabelen? En van de continue variabele?
- Je hebt alleen de kolommen
- Maak een vector
newvarsdie de variabelevarNamebevat waarcodecleanoflevis. Print deze. - Gebruik
prepare()om een nieuw data framedframe.treatte maken dat een one-hot-encoded versie vandframeis (zonder de uitkomstkolom).- Print dit en vergelijk met
dframe.
- Print dit en vergelijk met
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))