sklearn 中的过滤方法

说明超参数选择
VarianceThreshold方差过滤,可输入方差阈值(默认为0)返回方差>阈值的新矩阵可使用学习曲线或者取中位数来确认
SelectKBest用来选取k个统计量结果最佳的特征,生成符合统计量要求的新矩阵看使用的统计量k
chi2卡方检验,用于分类算法,捕捉相关性追求p小于显著性水平
f_classif/f_regressionf检验分类/f检验回归,只能捕捉线性相关性,并要求数据正态分布追求p小于显著性水平
mutual_info_classif / mutual_info_regression互信息分类/互信息回归,可以捕捉任何关系,但不能使用稀疏矩阵追求p小于显著性水平

1 .VarianceThreshold(方差过滤)

导库

from sklearn.feature_selection import VarianceThreshold

代码

x_fsvar = VarianceThreshold().fit_transform(X)

2.卡方过滤

导入库

from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2

代码

x_fschi = SelectKBest(chi2,k=300).fit_transform(x,Y)

我们想要消除所有p值大于特定值,比如0.05

chivalues,pvalues_chi = chi2(x_fsvar,Y)
#查看有效特征数
n = chivalues.shape[0] - (pvalues_chi > 0.05).sum()

  • chivalues: 卡方值
  • pvalues_chi: p值

其中参数k的取值决定新矩阵中有效特征的个数,
可采用学习曲线进行确定k值

3.f检验

f检验只能捕捉线性关系,并要求数据正态分布
导入库(这里用f检验分类做实例)

from sklearn.feature_selection import f_classif

代码

F,pvalues_f = f_classif(x_fsvar,Y)

其中F表示方差比率,pvalues_f表示p值

f检验的本质是寻找两组数据之间的线性关系,即寻找p值大于0.05或者0.01的特征

#查看有效特征数
n = F.shape[0]  - (pvalues_f > 0.05).sum()

4.互信息

导入库

from sklearn.feature_selection import mutual_info_classif as MIC

代码

result = MIC(x_fsvar,Y)

同样可以查看有效特征数量

它可以看成是一个随机变量中包含的关于另一个随机变量的信息量,1表示完全关联,0表示没有联系

在这里插入图片描述
查看有效特征数量

k = result.shape[0] - sum(result <= 0)

更为详细的公式讲解

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ctr+Alt+Del

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值