step_impute_knn()
創建配方步驟的規範,該步驟將使用最近鄰居來估算缺失數據。
用法
step_impute_knn(
recipe,
...,
role = NA,
trained = FALSE,
neighbors = 5,
impute_with = imp_vars(all_predictors()),
options = list(nthread = 1, eps = 1e-08),
ref_data = NULL,
columns = NULL,
skip = FALSE,
id = rand_id("impute_knn")
)
step_knnimpute(
recipe,
...,
role = NA,
trained = FALSE,
neighbors = 5,
impute_with = imp_vars(all_predictors()),
options = list(nthread = 1, eps = 1e-08),
ref_data = NULL,
columns = NULL,
skip = FALSE,
id = rand_id("impute_knn")
)
參數
- recipe
-
一個菜譜對象。該步驟將添加到此配方的操作序列中。
- ...
-
一個或多個選擇器函數用於選擇要估算的變量。當與
imp_vars
一起使用時,這些點指示哪些變量用於預測每個變量中的缺失數據。有關更多詳細信息,請參閱selections()
。 - role
-
由於沒有創建新變量,因此此步驟未使用。
- trained
-
指示預處理數量是否已估計的邏輯。
- neighbors
-
鄰居的數量。
- impute_with
-
調用
imp_vars
來指定使用哪些變量來插補變量,這些變量可以包含由逗號或不同選擇器分隔的特定變量名稱(請參閱selections()
)。如果某個列同時包含在要插補的列表和插補預測變量的列表中,則該列將從後者中刪除,並且不會用於插補本身。 - options
-
要傳遞給
gower::gower_topn()
的命名選項列表。當前可用選項為nthread
和eps
。 - ref_data
-
一組數據,將反映在此插補步驟之前完成的數據預處理。在
prep()
訓練該步驟之前,這是NULL
。 - columns
-
所選變量名稱的字符串。該字段是一個占位符,一旦使用
prep()
就會被填充。 - skip
-
一個合乎邏輯的。當
bake()
烘焙食譜時是否應該跳過此步驟?雖然所有操作都是在prep()
運行時烘焙的,但某些操作可能無法對新數據進行(例如處理結果變量)。使用skip = TRUE
時應小心,因為它可能會影響後續操作的計算。 - id
-
該步驟特有的字符串,用於標識它。
細節
該步驟使用訓練集來估算任何其他數據集。唯一可用的距離函數是高爾距離,它可用於標稱數據和數值數據的混合。
一旦確定了最近鄰,該眾數將用於預測名義變量,而平均值將用於數值數據。請注意,如果基礎數據是整數,平均值也會轉換為整數。
請注意,如果要估算的變量也在 impute_with
中,則該變量將被忽略。
如果大多數(或全部)插補變量也缺失,則插補後可能仍會出現缺失值。
從 recipes
0.1.16 開始,該函數名稱從 step_knnimpute()
更改為 step_impute_knn()
。
整理
當您tidy()
此步驟時,將返回包含列terms
(用於插補的選擇器或變量)、predictors
(用於插補的變量)和neighbors
的小標題。
也可以看看
其他插補步驟: step_impute_bag()
、 step_impute_linear()
、 step_impute_lower()
、 step_impute_mean()
、 step_impute_median()
、 step_impute_mode()
、 step_impute_roll()
例子
library(recipes)
data(biomass, package = "modeldata")
biomass_tr <- biomass[biomass$dataset == "Training", ]
biomass_te <- biomass[biomass$dataset == "Testing", ]
biomass_te_whole <- biomass_te
# induce some missing data at random
set.seed(9039)
carb_missing <- sample(1:nrow(biomass_te), 3)
nitro_missing <- sample(1:nrow(biomass_te), 3)
biomass_te$carbon[carb_missing] <- NA
biomass_te$nitrogen[nitro_missing] <- NA
rec <- recipe(
HHV ~ carbon + hydrogen + oxygen + nitrogen + sulfur,
data = biomass_tr
)
ratio_recipe <- rec %>%
step_impute_knn(all_predictors(), neighbors = 3)
ratio_recipe2 <- prep(ratio_recipe, training = biomass_tr)
imputed <- bake(ratio_recipe2, biomass_te)
# how well did it work?
summary(biomass_te_whole$carbon)
#> Min. 1st Qu. Median Mean 3rd Qu. Max.
#> 27.80 44.24 47.30 47.96 49.00 79.34
cbind(
before = biomass_te_whole$carbon[carb_missing],
after = imputed$carbon[carb_missing]
)
#> before after
#> [1,] 46.83 47.43000
#> [2,] 47.80 47.53333
#> [3,] 46.40 46.21000
summary(biomass_te_whole$nitrogen)
#> Min. 1st Qu. Median Mean 3rd Qu. Max.
#> 0.010 0.295 0.690 1.092 1.450 4.790
cbind(
before = biomass_te_whole$nitrogen[nitro_missing],
after = imputed$nitrogen[nitro_missing]
)
#> before after
#> [1,] 1.24 0.59333333
#> [2,] 0.30 0.92333333
#> [3,] 0.06 0.04666667
tidy(ratio_recipe, number = 1)
#> # A tibble: 1 × 4
#> terms predictors neighbors id
#> <chr> <chr> <dbl> <chr>
#> 1 all_predictors() NA 3 impute_knn_iyPXM
tidy(ratio_recipe2, number = 1)
#> # A tibble: 20 × 4
#> terms predictors neighbors id
#> <chr> <chr> <dbl> <chr>
#> 1 carbon hydrogen 3 impute_knn_iyPXM
#> 2 carbon oxygen 3 impute_knn_iyPXM
#> 3 carbon nitrogen 3 impute_knn_iyPXM
#> 4 carbon sulfur 3 impute_knn_iyPXM
#> 5 hydrogen carbon 3 impute_knn_iyPXM
#> 6 hydrogen oxygen 3 impute_knn_iyPXM
#> 7 hydrogen nitrogen 3 impute_knn_iyPXM
#> 8 hydrogen sulfur 3 impute_knn_iyPXM
#> 9 oxygen carbon 3 impute_knn_iyPXM
#> 10 oxygen hydrogen 3 impute_knn_iyPXM
#> 11 oxygen nitrogen 3 impute_knn_iyPXM
#> 12 oxygen sulfur 3 impute_knn_iyPXM
#> 13 nitrogen carbon 3 impute_knn_iyPXM
#> 14 nitrogen hydrogen 3 impute_knn_iyPXM
#> 15 nitrogen oxygen 3 impute_knn_iyPXM
#> 16 nitrogen sulfur 3 impute_knn_iyPXM
#> 17 sulfur carbon 3 impute_knn_iyPXM
#> 18 sulfur hydrogen 3 impute_knn_iyPXM
#> 19 sulfur oxygen 3 impute_knn_iyPXM
#> 20 sulfur nitrogen 3 impute_knn_iyPXM
相關用法
- R recipes step_impute_mean 使用平均值估算數值數據
- R recipes step_impute_roll 使用滾動窗口統計估算數值數據
- R recipes step_impute_mode 使用最常見的值估算名義數據
- R recipes step_impute_lower 估算低於測量閾值的數值數據
- R recipes step_impute_bag 通過袋裝樹進行插補
- R recipes step_impute_median 使用中位數估算數值數據
- R recipes step_impute_linear 通過線性模型估算數值變量
- R recipes step_inverse 逆變換
- R recipes step_ica ICA 信號提取
- R recipes step_indicate_na 創建缺失數據列指示器
- R recipes step_integer 將值轉換為預定義的整數
- R recipes step_intercept 添加截距(或常數)列
- R recipes step_interact 創建交互變量
- R recipes step_invlogit 逆 Logit 變換
- R recipes step_isomap 等位圖嵌入
- R recipes step_unknown 將缺失的類別分配給“未知”
- R recipes step_relu 應用(平滑)修正線性變換
- R recipes step_poly_bernstein 廣義伯恩斯坦多項式基
- R recipes step_pls 偏最小二乘特征提取
- R recipes step_ratio 比率變量創建
- R recipes step_geodist 兩個地點之間的距離
- R recipes step_nzv 近零方差濾波器
- R recipes step_nnmf 非負矩陣分解信號提取
- R recipes step_normalize 中心和比例數值數據
- R recipes step_depth 數據深度
注:本文由純淨天空篩選整理自Max Kuhn等大神的英文原創作品 Impute via k-nearest neighbors。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。