R 中的 NearZeroVar 返回 percentUnique > 0 用于常量特征?

NearZeroVar in R returning percentUnique > 0 for constant features?

我对 r(插入符号)中的 NearZeroVar 功能有点吃力。

查看下面附图中的结果。

令我吃惊的是,我的变量在所有样本中只有一个值:

参见下面列的 freq 函数。

这些变量的 freqRation = 0 进一步证实了这一点。

那么 percentUnique 是如何计算的 - 为什么函数 returns 2.7% 完全没有方差?

我错过了什么?

percentUnique 表示唯一条目数占总条目数。使用示例:

library(caret)
mtcars$newVar1 = 1
mtcars$newVar2 = c(1,rep(2,nrow(mtcars)-1))

nearZeroVar(mtcars,saveMetrics=TRUE)
        freqRatio percentUnique zeroVar   nzv
mpg      1.000000        78.125   FALSE FALSE
cyl      1.272727         9.375   FALSE FALSE
disp     1.500000        84.375   FALSE FALSE
hp       1.000000        68.750   FALSE FALSE
drat     1.000000        68.750   FALSE FALSE
wt       1.500000        90.625   FALSE FALSE
qsec     1.000000        93.750   FALSE FALSE
vs       1.285714         6.250   FALSE FALSE
am       1.461538         6.250   FALSE FALSE
gear     1.250000         9.375   FALSE FALSE
carb     1.000000        18.750   FALSE FALSE
newVar1  0.000000         3.125    TRUE  TRUE
newVar2 31.000000         6.250   FALSE  TRUE

对于 newVar1,我们只有 1 个与您一样的唯一值,因此您得到:

1/nrow(mtcars)
[1] 0.03125

3.125%。同样,newVar2 有 2 个唯一值,所以你得到:

length(unique(mtcars$newVar2))/nrow(mtcars)
[1] 0.0625