vtreat an einem kleinen Beispiel
In dieser Übung verwendest du vtreat, um eine kategoriale Variable in einem kleinen Beispiel per One-Hot-Encoding zu kodieren.
vtreat erstellt einen Treatment-Plan, um kategoriale Variablen in Indikatorvariablen umzuwandeln (mit "lev" gekennzeichnet) und numerische Variablen zu bereinigen (mit "clean" gekennzeichnet), also fehlerhafte Werte zu entfernen.
Zum Entwerfen eines Treatment-Plans verwendest du die Funktion designTreatmentsZ() (Docs)
treatplan <- designTreatmentsZ(data, varlist)
data: der originale Trainings-Data-Framevarlist: ein Vektor der zu behandelnden Eingabevariablen (als Strings).
designTreatmentsZ() gibt eine Liste mit einem Element scoreFrame zurück: ein Data Frame, der die Namen und Typen der neuen Variablen enthält:
scoreFrame <- treatplan %>%
magrittr::use_series(scoreFrame) %>%
select(varName, origName, code)
varName: der Name der neuen behandelten VariableorigName: der Name der ursprünglichen Variable, aus der die behandelte Variable stammtcode: der Typ der neuen Variable."clean": eine numerische Variable ohne NAs oder NaNs"lev": eine Indikatorvariable für ein spezifisches Ausprägungsniveau der ursprünglichen kategorialen Variable.
(magrittr::use_series() (Docs) ist ein Alias für $, den du in Pipes verwenden kannst.)
Für diese Übungen wollen wir varName, bei denen code entweder "clean" oder "lev" ist:
newvarlist <- scoreFrame %>%
filter(code %in% c("clean", "lev") %>%
magrittr::use_series(varName)
Um den Datensatz in vollständig numerische und one-hot-kodierte Variablen zu transformieren, verwende prepare() (Docs):
data.treat <- prepare(treatplan, data, varRestrictions = newvarlist)
treatplan: der Treatment-Plandata: der zu behandelnde Data FramevarRestrictions: die gewünschten Variablen in den behandelten Daten
Der Data Frame dframe und das Paket magrittr wurden bereits geladen.
Diese Übung ist Teil des Kurses
<Kurs>Überwachtes Lernen in R: Regression</Kurs>Übungsanweisungen
- Gib
dframeaus. Wir gehen davon aus, dasscolorundsizeEingabevariablen sind undpopularitydas vorherzusagende Ergebnis ist. - Erstelle einen Vektor namens
varsmit den Namen der Eingabevariablen (als Strings). - Lade das Paket
vtreat. - Verwende
designTreatmentsZ(), um einen Treatment-Plan für die Variablen invarszu erstellen. Weise ihn der Variabletreatplanzu. - Hole dir den
scoreFrameaus dem Treatment-Plan und untersuche ihn, um die Abbildung von alten auf neue Variablen zu sehen.- Du brauchst nur die Spalten
varName,origNameundcode. - Wie heißen die neuen Indikatorvariablen? Wie die kontinuierliche Variable?
- Du brauchst nur die Spalten
- Erstelle einen Vektor
newvars, der die VariablevarNameenthält, bei dercodeentwedercleanoderlevist. Gib ihn aus. - Verwende
prepare(), um einen neuen Data Framedframe.treatzu erstellen, der eine One-Hot-kodierte Version vondframeist (ohne die Ergebnis-Spalte).- Gib ihn aus und vergleiche mit
dframe.
- Gib ihn aus und vergleiche mit
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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))