当前位置: 首页 > news >正文

sklearn特征选取之RFE

sklearn.feature_selection.RFE 是一种递归特征消除(Recursive Feature Elimination, RFE)方法,用于通过反复训练模型和消除不重要的特征,逐步减少特征数量,最终选择最重要的特征。它是一种用于特征选择的算法,特别适合线性模型或其他对特征权重敏感的模型。

1. 语法

from sklearn.feature_selection import RFERFE(estimator, n_features_to_select=None, step=1, verbose=0)

2. 参数说明

  • estimator: 模型对象。用于拟合数据的学习器,它需要有一个 coef_feature_importances_ 属性,可以是诸如线性回归、决策树等模型。例如,LinearRegression()LogisticRegression()DecisionTreeClassifier() 等。
  • n_features_to_select: 整数或 None。要选择的特征数量。如果为 None,则选择一半的特征。
  • step: 整数或浮点数。每次迭代中要删除的特征数量:
    • 如果是整数,则每次移除指定数量的特征。
    • 如果是浮点数(范围为 0 到 1),则每次移除当前剩余特征数量的一部分(比例)。
  • verbose: 整数。控制冗长模式,设置为 1 时,会输出详细的进度信息,通常用于调试。

3. 返回值

  • RFE.fit(X, y): 返回拟合好的 RFE 对象,可以查看和分析所选择的特征。
    • support_: 一个布尔数组,指示哪些特征是被选中的(True 表示被选中)。
    • ranking_: 每个特征的排名,数值越小表示该特征越重要,1 表示被选中的特征。
    • n_features_: 被选择的特征数量。

4. 示例

(1) 基本用法:选择 5 个特征
from sklearn.datasets import make_friedman1
from sklearn.feature_selection import RFE
from sklearn.linear_model import LinearRegression# 生成样本数据
X, y = make_friedman1(n_samples=50, n_features=10, random_state=0)# 创建线性回归模型
model = LinearRegression()# 创建 RFE 对象,选择 5 个特征
rfe = RFE(estimator=model, n_features_to_select=5)# 训练 RFE
rfe.fit(X, y)# 查看哪些特征被选择了
print("Selected features:", rfe.support_)
print("Feature ranking:", rfe.ranking_)

输出:

Selected features: [False  True  True False  True False  True  True False False]
Feature ranking: [6 1 1 7 1 4 1 1 2 3]
  • rfe.support_ 输出一个布尔值数组,表示哪些特征被选择了(True 表示选中)。
  • rfe.ranking_ 输出特征的重要性排名,1 表示被选中的特征。
(2) 使用 step 参数递归减少特征
# 每次迭代移除 2 个特征
rfe = RFE(estimator=model, n_features_to_select=5, step=2)
rfe.fit(X, y)# 查看最终选择的特征
print("Selected features:", rfe.support_)
print("Feature ranking:", rfe.ranking_)
  • 使用 step=2,每次迭代中移除 2 个不重要的特征,直到剩下 5 个特征。
(3) 使用决策树进行特征选择
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris# 加载数据集
iris = load_iris()
X, y = iris.data, iris.target# 使用决策树模型
model = DecisionTreeClassifier()# 创建 RFE 对象,选择 2 个特征
rfe = RFE(estimator=model, n_features_to_select=2)
rfe.fit(X, y)# 输出选择的特征
print("Selected features:", rfe.support_)
print("Feature ranking:", rfe.ranking_)

输出:

Selected features: [ True False False  True]
Feature ranking: [1 3 2 1]
  • 通过决策树选择 2 个特征,输出显示第 1 和第 4 个特征被选择。

5. 应用场景

  • 降维: RFE 可以通过递归地删除不重要的特征,减少特征维度,有助于提高模型的性能并减少过拟合。
  • 特征选择: 通过选择对目标变量最重要的特征,RFE 可以提高模型的可解释性。
  • 模型优化: 减少不必要的特征有助于加快模型的训练速度。

6. 注意事项

  • 选择合适的 estimator: RFE 依赖于 estimatorcoef_feature_importances_ 属性,因此必须选择支持这些属性的模型,如线性回归、逻辑回归、决策树、随机森林等。
  • step 参数的设置: step 参数的选择可以影响计算效率。较大的 step 可以减少迭代次数,较小的 step 可以更精细地筛选特征。

7. 与其他特征选择方法的对比

  • SelectKBest: SelectKBest 是一种一次性选择前 k 个最重要特征的方法,而 RFE 是递归消除不重要特征,逐步选择最重要的特征。
  • RFECV: RFECV 是 RFE 的增强版,通过交叉验证自动选择最佳特征数量,而 RFE 需要手动指定特征数量。

RFE 是一个强大的特征选择工具,特别适合使用线性模型或决策树模型进行递归特征选择。

http://www.lryc.cn/news/445094.html

相关文章:

  • vue.js 展示树状结构数据,动态生成 HTML 内容
  • 科技赋能安全,财谷通助力抖音小店腾飞!
  • Redis安装教程
  • Idea集成docker实现镜像打包一键部署
  • spring 注解 - @NotNull - 确保字段或参数值不为 null
  • 408算法题leetcode--第13天
  • 【MySQL】表的基本查询
  • 李宏毅2023机器学习HW15-Few-shot Classification
  • API安全推荐厂商瑞数信息入选IDC《中国数据安全技术发展路线图》
  • 1.5 计算机网络的性能指标
  • 【已解决】IDEA鼠标光标与黑块切换问题,亲测有效
  • 记一次sql查询优化
  • str函数的模拟(包括strn函数的模拟)
  • 畅阅读微信小程序
  • RHEL7(RedHat红帽)软件安装教程
  • CC 攻击:一种特殊的 DDoS 攻击
  • 掌上高考爬虫逆向分析
  • 忘了SD吧,现在是Flux的时代
  • 服务器安装openssh9.9p1
  • Spring Boot集成Redis Search快速入门Demo
  • 提升工作效率神器
  • 统信服务器操作系统【targetcli部署】
  • I2C中继器TCA9517A(TI)
  • 基于单片机的智能电话控制系统设计
  • Go 综合题面试题
  • 【Python报错已解决】AttributeError: ‘Tensor‘ object has no attribute ‘kernel_size‘
  • Spring MVC 参数校验 总结
  • 【图像压缩与重构】基于BP神经网络
  • 数据结构--单链表创建、增删改查功能以及与结构体合用
  • 开源ids snort (windows版)