Wrapper递归特征消除 (Recursive Feature Elimination)

本文介绍了特征选择的三种方法:过滤法、包裹法和嵌入法,并重点讲解了Wrapper方法中的递归特征消除(RFE)及其在交叉验证中的应用。通过示例展示了如何使用RFE和RFECV进行特征选择,以及StratifiedKFold和KFold的区别,强调了在不平衡数据集上使用StratifiedKFold的重要性。
摘要由CSDN通过智能技术生成

特征选择三法宝:过滤法(Filter)、包裹法(Wrapper)、嵌入法(Embedding)

过滤法(Filter):按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征
包裹法(Wrapper):根据目标函数,每次选择若干特征或者排除若干特征,直到选择出最佳的子集。
嵌入法(Embedding):先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣。
 

递归消除特征法使用一个基模型来进行多轮训练,每轮训练后,移除若干权值系数的特征,再基于新的特征集进行下一轮训练。

  sklearn官方解释:对特征含有权重的预测模型(例如,线性模型对应参数coefficients),RFE通过递归减少考察的特征集规模来选择特征。首先,预测模型在原始特征上训练,每个特征指定一个权重。之后,那些拥有最小绝对值权重的特征被踢出特征集。如此往复递归,直至剩余的特征数量达到所需的特征数量。

  RFECV 通过交叉验证的方式执行RFE,以此来选择最佳数量的特征:对于一个数量为d的feature的集合,他的所有的子集的个数是2的d次方减1(包含空集)。指定一个外部的学习算法,比如SVM之类的。通过该算法计算所有子集的validation error。选择error最小的那个子集作为所挑选的特征
 

##################  一、REFCV递归特征消除#####################################
from sklearn.svm import SVC
from sklearn.datasets import load_digits
from sklearn.feature_selection import RFE
import matplotlib.pyplot as plt

# 加载数据
digits = load_digits()
X = digits.images.reshape(len(digits.images),-1)
y = digits.target

#创建RFE object
svc=SVC(kernel='linear',C=1)
rfe=RFE(estimator=svc,n_features_to_select=1,step=1)
rfe.fit(X,y)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值