当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。