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


R recipes step_depth 数据深度


step_depth() 创建配方步骤的规范,该步骤将数字数据转换为数据深度的测量值。这是针对分类类变量的每个值完成的。

用法

step_depth(
  recipe,
  ...,
  class,
  role = "predictor",
  trained = FALSE,
  metric = "halfspace",
  options = list(),
  data = NULL,
  prefix = "depth_",
  keep_original_cols = TRUE,
  skip = FALSE,
  id = rand_id("depth")
)

参数

recipe

一个菜谱对象。该步骤将添加到此配方的操作序列中。

...

一个或多个选择器函数用于为此步骤选择变量。有关更多详细信息,请参阅selections()

class

指定要用作类的单个分类变量的单个字符串。

role

对于此步骤创建的模型项,应为其分配什么分析角色?默认情况下,此步骤根据原始变量创建的新列将用作模型中的预测变量。

trained

指示预处理数量是否已估计的逻辑。

metric

指定深度度量的字符串。可能的值为"potential"、"halfspace"、"Mahalanobis"、"simplicialVolume"、"spatial" 和"zonoid"。

options

要传递给底层深度函数的选项列表。请参阅ddalpha::depth.halfspace() , ddalpha::depth.Mahalanobis() , ddalpha::depth.potential() , ddalpha::depth.projection() , ddalpha::depth.simplicial() , ddalpha::depth.simplicialVolume() , ddalpha::depth.spatial() , ddalpha::depth.zonoid()

data

prep()执行后,训练数据就存储在这里。

prefix

生成的新变量的前缀字符串。请参阅下面的注释。

keep_original_cols

将原始变量保留在输出中的逻辑。默认为 FALSE

skip

一个合乎逻辑的。当bake() 烘焙食谱时是否应该跳过此步骤?虽然所有操作都是在 prep() 运行时烘焙的,但某些操作可能无法对新数据进行(例如处理结果变量)。使用skip = TRUE时应小心,因为它可能会影响后续操作的计算。

id

该步骤特有的字符串,用于标识它。

recipe 的更新版本,将新步骤添加到任何现有操作的序列中。

细节

数据深度指标试图衡量数据点与其分布中心的接近程度。计算深度的方法有很多种,但一个简单的例子是数据点到分布质心的距离的倒数。一般来说,较小的值表示数据点不靠近质心。 step_depth 可以根据新值与训练集分布的接近程度来计算新数据点的特定于类的深度。

此步骤需要德阿尔法包。如果未安装,该步骤将停止并显示有关安装包的注释。

请注意,保存整个训练集以计算未来的深度值。保存的数据已经过训练(即准备)和烘焙(即处理),直到 step_depth 在配方中占据的位置之前的位置。此外,不同步骤方法的数据要求可能会有所不同。例如,使用 metric = "Mahalanobis" 要求每个类至少具有与 terms 参数中列出的变量一样多的行。

该函数将为 class 变量的每个唯一值创建一个新列。生成的变量不会替换原始值,并且默认情况下具有前缀 depth_ 。可以使用prefix 参数更改命名格式。

整理

当您 tidy() 此步骤时,将返回包含列 terms(选定的选择器或变量)和 class 的 tibble。

箱重

底层操作不允许使用案例权重。

例子


# halfspace depth is the default
rec <- recipe(Species ~ ., data = iris) %>%
  step_depth(all_numeric_predictors(), class = "Species")

# use zonoid metric instead
# also, define naming convention for new columns
rec <- recipe(Species ~ ., data = iris) %>%
  step_depth(all_numeric_predictors(),
    class = "Species",
    metric = "zonoid", prefix = "zonoid_"
  )

rec_dists <- prep(rec, training = iris)

dists_to_species <- bake(rec_dists, new_data = iris)
dists_to_species
#> # A tibble: 150 × 8
#>    Sepal.Length Sepal.Width Petal.Length Petal.Width Species zonoid_setosa
#>           <dbl>       <dbl>        <dbl>       <dbl> <fct>           <dbl>
#>  1          5.1         3.5          1.4         0.2 setosa         0.559 
#>  2          4.9         3            1.4         0.2 setosa         0.167 
#>  3          4.7         3.2          1.3         0.2 setosa         0.299 
#>  4          4.6         3.1          1.5         0.2 setosa         0.170 
#>  5          5           3.6          1.4         0.2 setosa         0.391 
#>  6          5.4         3.9          1.7         0.4 setosa         0.0838
#>  7          4.6         3.4          1.4         0.3 setosa         0.0200
#>  8          5           3.4          1.5         0.2 setosa         0.645 
#>  9          4.4         2.9          1.4         0.2 setosa         0.0200
#> 10          4.9         3.1          1.5         0.1 setosa         0.0200
#> # ℹ 140 more rows
#> # ℹ 2 more variables: zonoid_versicolor <dbl>, zonoid_virginica <dbl>

tidy(rec, number = 1)
#> # A tibble: 1 × 3
#>   terms                    class id         
#>   <chr>                    <chr> <chr>      
#> 1 all_numeric_predictors() NA    depth_eCCL8
tidy(rec_dists, number = 1)
#> # A tibble: 4 × 3
#>   terms        class   id         
#>   <chr>        <chr>   <chr>      
#> 1 Sepal.Length Species depth_eCCL8
#> 2 Sepal.Width  Species depth_eCCL8
#> 3 Petal.Length Species depth_eCCL8
#> 4 Petal.Width  Species depth_eCCL8
源代码:R/depth.R

相关用法


注:本文由纯净天空筛选整理自Max Kuhn等大神的英文原创作品 Data Depths。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。