Es gibt viele Optionen in R. Ein schöner Ort zum Anschauen ist das caretPaket, das eine schöne Schnittstelle zu vielen anderen Paketen und Optionen bietet. Sie können auf der Website einen Blick hier . Es gibt viele Möglichkeiten, aber ich werde eine veranschaulichen.
Hier ist ein Beispiel für die Verwendung eines einfachen Filters unter Verwendung der in R"mtcars" integrierten Datensätze (siehe unten).
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Nun einige Code-Setups (Laden von Paketen usw.):
# setup a parallel environment
library(doParallel)
cl <- makeCluster(2) # number of cores to use
registerDoParallel(cl)
library(caret)
Und wir können ein einfaches Modell anpassen, um Variablen auszuwählen:
fit1 <- sbf(mtcars[, -1], mtcars[, 1],
sbfControl =
sbfControl(functions = rfSBF, method = "repeatedcv", repeats = 10)
)
Wenn wir uns die Ergebnisse ansehen, erhalten wir:
fit1
Selection By Filter
Outer resampling method: Cross-Validated (10 fold, repeated 10 times)
Resampling performance:
RMSE Rsquared RMSESD RsquaredSD
2.266 0.9224 0.8666 0.1523
Using the training set, 7 variables were selected:
cyl, disp, hp, wt, vs...
During resampling, the top 5 selected variables (out of a possible 9):
am (100%), cyl (100%), disp (100%), gear (100%), vs (100%)
On average, 7 variables were selected (min = 5, max = 9)
Schließlich können wir die ausgewählten Variablen (in fit1$optVariables) gegen das Ergebnis zeichnen mpg:
library(ggplot2)
library(gridExtra)
do.call(grid.arrange,
lapply(fit1$optVariables, function(v) {
ggplot(mtcars, aes_string(x = v, y = "mpg")) +
geom_jitter()
}))
Ergebnis in dieser Grafik: 