了解方差阈值

时间:2019-08-29 08:14:14

标签: python scikit-learn

我正在研究python中的文本分类问题,其中无论单词是否在文本内,我都基于{0,1}构建训练数组。

array([[0., 1., 1., ..., 0., 0., 0.],
       [0., 1., 1., ..., 0., 0., 0.],
       [0., 1., 1., ..., 0., 0., 0.],
       ...,
       [0., 1., 1., ..., 0., 0., 0.],
       [0., 1., 1., ..., 0., 0., 0.],
       [0., 1., 1., ..., 0., 0., 0.]])

由于要在其上运行SVM,因此我希望减少功能。在scikit学习中,我发现了这一点:https://scikit-learn.org/stable/modules/feature_selection.html 并将“差异阈值”设置为:

sel = VarianceThreshold(threshold=(.8 * (1 - .8)))
x_train_red = sel.fit_transform(x_train)

从缩小中,我从以下位置缩小形状:

(7808, 2000)
(7808, 97)

它只会减少每行有1条或每行有0条的futre吗?

1 个答案:

答案 0 :(得分:1)

从文档中您可以看到方差是由p(1-p)计算的,默认的三位数或极限0.8表示将消除0方差大于0.8的任何列。因此,它会删除出现次数很少的列,因为这些单词不在您的文本中出现很多,因此它们的差异将接近0,并且通过特征选择将其消除。