虽然 AUC 过滤器的文档表明它类似于mlr3measures::auc
,但它实际上并未使用该功能。相反,它使用自己的实现来计算(“接收器操作特性”)曲线下的面积,它不需要概率值,只需要一个连续值,可用于将样本与截止值分开。
据Filter
我了解,s 主要用于计算过滤器分数(请参阅基类的文档Filter
)。它们与PipeOpFilter
frommlr3pipelines
包结合使用最有用,这也是您引用的书中的示例正在做的事情。PipeOp
s 通常有助于将过滤步骤(或任何类型的预处理)集成到学习过程中(书中的章节mlr3pipelines
可能是了解这一点的好点)。但是,这些也可以用于计算步骤,例如从 a 中过滤掉列Task
:
pof = po("filter", mlr3filters::FilterVariance$new(), filter.frac = 0.5)
task = tsk("iris")
pof_result = pof$train(list(task))
pof_result[[1]]
#> <TaskClassif:iris> (150 x 3)
#> * Target: Species
#> * Properties: multiclass
#> * Features (2):
#> - dbl (2): Petal.Length, Sepal.Length
pof_result[[1]]$data()
#> Species Petal.Length Sepal.Length
#> 1: setosa 1.4 5.1
#> 2: setosa 1.4 4.9
#> 3: setosa 1.3 4.7
#> 4: setosa 1.5 4.6
#> 5: setosa 1.4 5.0
#> ---
#> 146: virginica 5.2 6.7
#> 147: virginica 5.0 6.3
#> 148: virginica 5.2 6.5
#> 149: virginica 5.4 6.2
#> 150: virginica 5.1 5.9
看看?PipeOp
这个$train()
方法(虽然真的书的章节是一个更好的地方开始恕我直言)。?PipeOpFilter
记录超filter.frac
参数:
Parameters:
[...]
• ‘filter.nfeat’ :: ‘numeric(1)’
Number of features to select. Mutually exclusive with ‘frac’
and ‘cutoff’.
• ‘filter.frac’ :: ‘numeric(1)’
Fraction of features to keep. Mutually exclusive with ‘nfeat’
and ‘cutoff’.
• ‘filter.cutoff’ :: ‘numeric(1)’
Minimum value of filter heuristic for which to keep features.
Mutually exclusive with ‘nfeat’ and ‘frac’.
Note that at least one of ‘filter.nfeat’, ‘filter.frac’, or
‘filter.cutoff’ must be given.
所以它所做的是运行Filter
's$calculate()
函数并根据结果选择特征$score
。
要回答关于从哪里获得帮助的更一般的问题:通常,对象类(您通常可以通过调用找到class(object)
)是一个很好的开始查看;这些类通常继承自更通用的基类,如果它们不熟悉,这些基类也可以解释该过程的某些部分。在这个例子中,PipeOpFilter
继承自几个类,其中PipeOp
——帮助文件中说明了这一点。除此之外,还有这本书,你知道的。最后,如果一切都失败了,不幸的是,可能有必要查看源代码。