【问题标题】:Understanding Variance Treshold了解方差阈值
【发布时间】:2019-08-29 08:14:14
【问题描述】:

我正在处理 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 learn 我发现了这个: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 的未来吗?或者它是如何工作的?

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    从文档中您可以看到方差是通过 p(1-p) 计算的,默认的三分法或限制 0.8 意味着任何有 0 方差概率高于 0.8 的列都将被消除。所以它会删除很少出现的列,这些词在你的文本中并不多,所以它们的方差将接近 0,特征选择将消除它。

    【讨论】:

    • 所以列有可能是:0,0,0,0,0...,0,1并且会被淘汰?
    • 是的,如果您的列是 [0,0,0,0,0,0.....,1],它将被消除,因为它具有低方差
    猜你喜欢
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2018-05-10
    相关资源
    最近更新 更多