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


R recipes check_class 檢查變量類別


check_class 創建配方檢查規範,用於檢查變量是否屬於指定類。

用法

check_class(
  recipe,
  ...,
  role = NA,
  trained = FALSE,
  class_nm = NULL,
  allow_additional = FALSE,
  skip = FALSE,
  class_list = NULL,
  id = rand_id("class")
)

參數

recipe

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

...

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

role

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

trained

... 中的選擇器是否已由 prep() 解析的邏輯。

class_nm

將在 inherits 中用於檢查類的字符向量。如果NULL,則將在prep中學習課程。可以包含多個類。

allow_additional

如果 TRUE 則允許變量具有除所檢查的類之外的附加類。

skip

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

class_list

列類的命名列表。在由 prep() 計算之前,這是 NULL

id

此檢查唯一的字符串,用於識別它。

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

細節

該函數可以通過兩種方式檢查變量的類別。當提供 class 參數時,它將檢查指定的所有變量是否屬於給定類。如果此參數為 NULL ,則檢查將了解 prep 中每個指定變量的類。如果變量不屬於所請求的類,這兩種方法都會破壞bake。如果變量在 prep 中具有多個類,則檢查所有類。請注意,在 prep 中,參數 strings_as_factors 默認為 TRUE 。如果訓練集包含字符變量,則當 strings_as_factorsTRUE 時,檢查將中斷 bake

整理

當您tidy()進行此項檢查時,將返回一個包含列terms(選擇的選擇器或變量)和value(類型)的小標題。

箱重

底層操作不允許使用案例權重。

也可以看看

其他檢查:check_cols()check_missing()check_new_values()check_range()

例子

library(dplyr)
data(Sacramento, package = "modeldata")

# Learn the classes on the train set
train <- Sacramento[1:500, ]
test <- Sacramento[501:nrow(Sacramento), ]
recipe(train, sqft ~ .) %>%
  check_class(everything()) %>%
  prep(train, strings_as_factors = FALSE) %>%
  bake(test)
#> # A tibble: 432 × 9
#>    city           zip     beds baths type   price latitude longitude  sqft
#>    <fct>          <fct>  <int> <dbl> <fct>  <int>    <dbl>     <dbl> <int>
#>  1 SACRAMENTO     z95834     4   2   Resi… 328578     38.6     -122.  1659
#>  2 ELK_GROVE      z95757     3   3   Resi… 331000     38.4     -121.  2442
#>  3 RANCHO_CORDOVA z95742     4   3   Resi… 331500     38.6     -121.  2590
#>  4 SACRAMENTO     z95833     4   2   Resi… 340000     38.6     -122.  2155
#>  5 SACRAMENTO     z95838     3   2   Resi… 344755     38.7     -121.  1673
#>  6 SACRAMENTO     z95828     3   2   Resi… 345746     38.5     -121.  1810
#>  7 ELK_GROVE      z95757     4   2   Resi… 351000     38.4     -121.  2789
#>  8 GALT           z95632     4   2   Resi… 353767     38.3     -121.  1606
#>  9 GALT           z95632     5   3.5 Resi… 355000     38.3     -121.  3499
#> 10 SACRAMENTO     z95835     4   2   Resi… 356035     38.7     -122.  2166
#> # ℹ 422 more rows

# Manual specification
recipe(train, sqft ~ .) %>%
  check_class(sqft, class_nm = "integer") %>%
  check_class(city, zip, type, class_nm = "factor") %>%
  check_class(latitude, longitude, class_nm = "numeric") %>%
  prep(train, strings_as_factors = FALSE) %>%
  bake(test)
#> # A tibble: 432 × 9
#>    city           zip     beds baths type   price latitude longitude  sqft
#>    <fct>          <fct>  <int> <dbl> <fct>  <int>    <dbl>     <dbl> <int>
#>  1 SACRAMENTO     z95834     4   2   Resi… 328578     38.6     -122.  1659
#>  2 ELK_GROVE      z95757     3   3   Resi… 331000     38.4     -121.  2442
#>  3 RANCHO_CORDOVA z95742     4   3   Resi… 331500     38.6     -121.  2590
#>  4 SACRAMENTO     z95833     4   2   Resi… 340000     38.6     -122.  2155
#>  5 SACRAMENTO     z95838     3   2   Resi… 344755     38.7     -121.  1673
#>  6 SACRAMENTO     z95828     3   2   Resi… 345746     38.5     -121.  1810
#>  7 ELK_GROVE      z95757     4   2   Resi… 351000     38.4     -121.  2789
#>  8 GALT           z95632     4   2   Resi… 353767     38.3     -121.  1606
#>  9 GALT           z95632     5   3.5 Resi… 355000     38.3     -121.  3499
#> 10 SACRAMENTO     z95835     4   2   Resi… 356035     38.7     -122.  2166
#> # ℹ 422 more rows

# By default only the classes that are specified
#   are allowed.
x_df <- tibble(time = c(Sys.time() - 60, Sys.time()))
x_df$time %>% class()
#> [1] "POSIXct" "POSIXt" 
if (FALSE) {
recipe(x_df) %>%
  check_class(time, class_nm = "POSIXt") %>%
  prep(x_df) %>%
  bake_(x_df)
}

# Use allow_additional = TRUE if you are fine with it
recipe(x_df) %>%
  check_class(time, class_nm = "POSIXt", allow_additional = TRUE) %>%
  prep(x_df) %>%
  bake(x_df)
#> # A tibble: 2 × 1
#>   time               
#>   <dttm>             
#> 1 2023-08-26 13:46:44
#> 2 2023-08-26 13:47:44
源代碼:R/class.R

相關用法


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