Jan*_*ana 6 statistics r variance r-caret
我有相当大的数据集,我想在其中排除方差相当低的列,这就是为什么我想使用短语 NearZeroVar。但是,我确实很难理解 freqCut 和 uniqueCut 的作用以及它们如何相互影响。我已经阅读了 R 中的解释,但这并没有真正帮助我解决这个问题。如果有人能给我解释一下,我将非常感激!
如果一个变量的变化或变化很小,它就像一个常数,对预测没有用处。这将具有接近于零的方差,因此该函数的名称。
这两个参数不会相互影响,它们的作用是处理产生接近零方差的变量的常见场景。该列需要满足两个条件才能被排除。
让我们举个例子:
mat = cbind(1,rep(c(1,2),c(8,1)),rep(1:3,3),1:9)
mat
[,1] [,2] [,3] [,4]
[1,] 1 1 1 1
[2,] 1 1 2 2
[3,] 1 1 3 3
[4,] 1 1 1 4
[5,] 1 1 2 5
[6,] 1 1 3 6
[7,] 1 1 1 7
[8,] 1 1 2 8
[9,] 1 2 3 9
Run Code Online (Sandbox Code Playgroud)
如果我们使用默认值,即最常见到第二个值和唯一值要求为 95/5,您可以看到仅删除了第一列:
nearZeroVar(mat)
[1] 1
Run Code Online (Sandbox Code Playgroud)
让我们看看第二列,最常见到第二多的是 8/1,它有 2 个唯一值,即 2/9 = 0.22。因此,要过滤掉此内容,您需要更改两个设置:
nearZeroVar(mat,freqCut=7/1,uniqueCut=30)
[1] 1 2
Run Code Online (Sandbox Code Playgroud)
最后,您最可能不应该过滤掉的内容是第 3 列或第 4 列,因此当我们设置一些无意义的内容时,我们将过滤掉该列:
nearZeroVar(mat,freqCut=0.1,uniqueCut=50)
[1] 1 2 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3760 次 |
| 最近记录: |