當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R recipes step_impute_mean 使用平均值估算數值數據


step_impute_mean() 創建配方步驟的規範,該步驟將用這些變量的訓練集平均值替換數值變量的缺失值。

用法

step_impute_mean(
  recipe,
  ...,
  role = NA,
  trained = FALSE,
  means = NULL,
  trim = 0,
  skip = FALSE,
  id = rand_id("impute_mean")
)

step_meanimpute(
  recipe,
  ...,
  role = NA,
  trained = FALSE,
  means = NULL,
  trim = 0,
  skip = FALSE,
  id = rand_id("impute_mean")
)

參數

recipe

一個菜譜對象。該步驟將添加到此配方的操作序列中。

...

一個或多個選擇器函數用於為此步驟選擇變量。有關更多詳細信息,請參閱selections()

role

由於沒有創建新變量,因此此步驟未使用。

trained

指示預處理數量是否已估計的邏輯。

means

均值的命名數值向量。在由 prep() 計算之前,這是 NULL 。請注意,如果原始數據是整數,均值將轉換為整數以保持相同的數據類型。

trim

在計算平均值之前要從變量每一端修剪的觀測值分數(0 到 0.5)。超出該範圍的修剪值被視為最近的端點。

skip

一個合乎邏輯的。當bake() 烘焙食譜時是否應該跳過此步驟?雖然所有操作都是在 prep() 運行時烘焙的,但某些操作可能無法對新數據進行(例如處理結果變量)。使用skip = TRUE時應小心,因為它可能會影響後續操作的計算。

id

該步驟特有的字符串,用於標識它。

recipe 的更新版本,將新步驟添加到任何現有操作的序列中。

細節

step_impute_mean 根據 prep.recipetraining 參數中使用的數據估計變量均值。 bake.recipe 然後使用這些平均值將新值應用於新數據集。

recipes 0.1.16 開始,該函數名稱從 step_meanimpute() 更改為 step_impute_mean()

整理

當您tidy()此步驟時,將返回包含列terms(選定的選擇器或變量)和model(平均值)的小標題。

調整參數

此步驟有 1 個調整參數:

  • trim :修剪量(類型:double,默認值:0)

箱重

此步驟執行可以利用案例權重的無監督操作。因此,個案權重僅與頻率權重一起使用。有關更多信息,請參閱 case_weights 中的文檔和 tidymodels.org 中的示例。

也可以看看

例子

data("credit_data", package = "modeldata")

## missing data per column
vapply(credit_data, function(x) mean(is.na(x)), c(num = 0))
#>       Status    Seniority         Home         Time          Age 
#> 0.0000000000 0.0000000000 0.0013471037 0.0000000000 0.0000000000 
#>      Marital      Records          Job     Expenses       Income 
#> 0.0002245173 0.0000000000 0.0004490346 0.0000000000 0.0855410867 
#>       Assets         Debt       Amount        Price 
#> 0.0105523125 0.0040413112 0.0000000000 0.0000000000 

set.seed(342)
in_training <- sample(1:nrow(credit_data), 2000)

credit_tr <- credit_data[in_training, ]
credit_te <- credit_data[-in_training, ]
missing_examples <- c(14, 394, 565)

rec <- recipe(Price ~ ., data = credit_tr)

impute_rec <- rec %>%
  step_impute_mean(Income, Assets, Debt)

imp_models <- prep(impute_rec, training = credit_tr)

imputed_te <- bake(imp_models, new_data = credit_te, everything())

credit_te[missing_examples, ]
#>      Status Seniority  Home Time Age Marital Records     Job Expenses
#> 28     good        15 owner   36  43 married      no   fixed       75
#> 688    good         2  rent   60  32 married      no partime       87
#> 1002   good        21  rent   60  39 married      no   fixed      124
#>      Income Assets Debt Amount Price
#> 28      251   4000    0   1800  2557
#> 688     115   2000    0   1250  1517
#> 1002    191   2000    0   2000  2536
imputed_te[missing_examples, names(credit_te)]
#> # A tibble: 3 × 14
#>   Status Seniority Home   Time   Age Marital Records Job   Expenses Income
#>   <fct>      <int> <fct> <int> <int> <fct>   <fct>   <fct>    <int>  <int>
#> 1 good          15 owner    36    43 married no      fixed       75    251
#> 2 good           2 rent     60    32 married no      part…       87    115
#> 3 good          21 rent     60    39 married no      fixed      124    191
#> # ℹ 4 more variables: Assets <int>, Debt <int>, Amount <int>, Price <int>

tidy(impute_rec, number = 1)
#> # A tibble: 3 × 3
#>   terms  value id               
#>   <chr>  <dbl> <chr>            
#> 1 Income    NA impute_mean_Hlm2y
#> 2 Assets    NA impute_mean_Hlm2y
#> 3 Debt      NA impute_mean_Hlm2y
tidy(imp_models, number = 1)
#> # A tibble: 3 × 3
#>   terms  value id               
#>   <chr>  <dbl> <chr>            
#> 1 Income   142 impute_mean_Hlm2y
#> 2 Assets  5378 impute_mean_Hlm2y
#> 3 Debt     364 impute_mean_Hlm2y
源代碼:R/impute_mean.R

相關用法


注:本文由純淨天空篩選整理自Max Kuhn等大神的英文原創作品 Impute numeric data using the mean。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。