【机器学习】【特征选择】5.包装法

Wrapper包装法

包装法在初始特征集上训练评估器,并且通过 coef_属性或通过feature_importances_属性获得每个特征的重要性。

然后,从当前的一组特征中修剪最不重要的 特征

在修剪的集合上递归地重复该过程,直到最终到达所需数量的要选择的特征。

区别于过滤法和嵌入法的一次 训练解决所有问题,包装法要使用特征子集进行多次训练,因此它所需要的计算成本是最高的。

的“算法”,指的是专业的 数据挖掘算法

最典型的目标函数是递归特征消除法(Recursive feature elimination, 简写为RFE)

它是一种贪婪的优化算法, 旨在找到性能最佳的特征子集

它反复创建模型,并在每次迭代时保留最佳特征或剔除最差特征,下一次迭代时, 它会使用上一次建模中没有被选中的特征来构建下一个模型,直到所有特征都耗尽为止。然后,它根据自己保留或 剔除特征的顺序来对特征进行排名,最终选出一个最佳子集

类:sklearn.feature_selection.RFE (estimator, n_features_to_select=None, step=1, verbose=0)

  • 参数estimator是需要填写的实例化后的评估器,
  • n_features_to_select是想要选择的特征个数,
  • step表示每次迭 代中希望移除的特征个数。
  • 除此之外,RFE类有两个很重要的属性,
  • .support_:返回所有的特征的是否最后被选 中的布尔矩阵
  • _.ranking_返回特征的按数次迭代中综合重要性的排名。#排的越前越重要

类feature_selection.RFECV会在交叉 验证循环中执行RFE以找到最佳数量的特征,增加参数cv,其他用法都和RFE一模一样。

from sklearn.feature_selection import RFE

RFC_ = RFC(n_estimators =10,random_state=0)
#随机森林实例化
selector = RFE(RFC_, n_features_to_select=340, step=50).fit(X, y)
#RFE实例化,想要选择的特征340个,这的340是嵌入法发现的,删除50个
selector.support_.sum()
#返回340
selector.ranking_
#返回排名
X_wrapper = selector.transform(X)
#返回选择后的特征矩阵
cross_val_score(RFC_,X_wrapper,y,cv=5).mean()
——————————————————————
0.9389522


学习曲线:
score = []
for i in range(1,751,50):
    X_wrapper = RFE(RFC_,n_features_to_select=i, step=50).fit_transform(X,y)
    once = cross_val_score(RFC_,X_wrapper,y,cv=5).mean()
    score.append(once)
plt.figure(figsize=[20,5])
plt.plot(range(1,751,50),score)
plt.xticks(range(1,751,50))
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rrHxASB0-1598967683253)(C:\Users\hp\Desktop\数据特征选择\包装法学习曲线.png)]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值