Có nhiều lựa chọn có sẵn trong R. Một nơi tốt để tìm là caretgói cung cấp một giao diện đẹp cho nhiều gói và tùy chọn khác. Bạn có thể xem trang web ở đây . Có nhiều lựa chọn ngoài kia, nhưng tôi sẽ minh họa một.
Dưới đây là một ví dụ về việc sử dụng bộ lọc đơn giản bằng cách sử dụng Rbộ dữ liệu "mtcars" tích hợp (hiển thị bên dưới).
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
Bây giờ một số thiết lập mã (tải gói, v.v.):
# setup a parallel environment
library(doParallel)
cl <- makeCluster(2) # number of cores to use
registerDoParallel(cl)
library(caret)
Và chúng ta có thể điều chỉnh một mô hình đơn giản để chọn các biến:
fit1 <- sbf(mtcars[, -1], mtcars[, 1],
sbfControl =
sbfControl(functions = rfSBF, method = "repeatedcv", repeats = 10)
)
Xem kết quả, chúng tôi nhận được:
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)
Cuối cùng, chúng ta có thể vẽ các biến được chọn (trong fit1$optVariables) dựa trên kết quả , mpg:
library(ggplot2)
library(gridExtra)
do.call(grid.arrange,
lapply(fit1$optVariables, function(v) {
ggplot(mtcars, aes_string(x = v, y = "mpg")) +
geom_jitter()
}))
Kết quả trong biểu đồ này: 