VarianceThreshold

最近在数据的预处理中遇到了VarianceThreshold操作,这是sklearn.feature_selection,就是数据特征值选择,为什么会有这种操作呢,其实这是在进行数据分析之前的一种数据预处理作业,以为我们遇到的数据是复杂多变的,有可能会存在很多个特征值,但是并不是每一个特征值都能很好的体现区分度,那么这样的特征值就不存在分析的价值了。

假设某特征的特征值只有0和1,并且在所有输入样本中,95%的实例的该特征取值都是1,那就可以认为这个特征作用不大。如果100%都是1,那这个特征就没意义了。当特征值都是离散型变量的时候这种方法才能用,如果是连续型变量,就需要将连续变量离散化之后才能用。而且实际当中,一般不太会有95%以上都取某个值的特征存在,所以这种方法虽然简单但是不太好用。可以把它作为特征选择的预处理,先去掉那些取值变化小的特征,然后再从接下来提到的的特征选择方法中选择合适的进行进一步的特征选择。

那我们怎么来评判一个特征值是不是存在对分析结果而言的高区分度呢,VarianceThreshold就是来帮我们做这一处理的,这样会简化数据分析的复杂程度,也会使得分析结果更有效的。

下面举一个简单的例子:


def var():
    var=VarianceThreshold(threshold=1.0)
    data=var.fit_transform([[0,2,0,3],[0,1,4,3],[0,1,1,3]])
    print(data)
    return None
var()

调用函数以后出现的结果是:

[[0]
 [4]
 [1]]

我们发现在三组数据里,我们发现第一列,(注意是观察每一列的数据)全是0,第二列方差小于1,第四列也是相同的值,那么这些列的区分度就会很微弱,也就不具备分析的价值了,而至于threshold的理解,官网上面也给出了具体的解释。

Features with a training-set variance lower than this threshold will be removed. The default is to keep all features with non-zero variance, i.e. remove the features that have the same value in all samples.

如果想了解更多可以访问http://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.VarianceThreshold.html

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值