如何用sklearn工具包里面的feature_selection模块来进行特征选择/降维(二)

本文深入探讨了递归特征消除(RFE)和SelectFromModel等特征选择方法,详细讲解了RFE如何通过递归方式减少特征数量,以及SelectFromModel如何基于评估器的coef_或feature_importances_属性移除不重要特征。同时,介绍了基于L1正则化的特征选择应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(接上篇

  • 1.13.3. 递归特征消除
    给定一个对特征进行权重分配的外部评估器(比如线性模型里面的系数),递归特征消除(RFE)法会通过递归考虑越来越少的特征集来进行特征选择。首先,在初始化的特征集上面已经训练好的评估器要么通过coef_属性,要么通过feature_importances_属性获取每个特征的重要性。接着,最不重要的特征将从当前特征集中删除。然后会在修剪集(即刚才删除最不重要特征后的数据集)上递归地重复这个过程直到最终达到所需要的特征数量。

    RFECV则以交叉验证循环的方式执行RFE来找到最佳特征数量。
    示例

  • 1.13.4. 使用SelectFromModel进行特征选择
    SelectFromModel是元转换器,即它能与拟合后任一具有coef_feature_importances_属性的评估器一起使用。如果这些特征相应的coef_feature_importances_值低于预设的threshold参数,那么这些特征会被认为是不重要的且会被移除。除了通过数值来指定阈值,还可以通过内置的启发式方法,使用字符串参数找到阈值。可用的启发式方法有“mean(平均数)”、“median(中位数)”以及像“0.1*mean”这样倍数的浮点数。同threshold标准结合的时候,可以使用max_features参数来设置选择特征数量。

    如何使用该方法请看下面的示例。
    示例

    1.13.4.1. 基于L1的特征选择

    使用L1范数/正则化惩罚的线性模型会得到稀疏的解:它们的许多系数都是零。当目标是减少与另一个分类器一起使用的数据维度时,可以将它们与feature_selection.SelectFromModel 方法一起使用来选择非零系数。特别是,可用于此目的的稀疏评估器有,用于回归的 linear_model.Lasso,以及用于分类的linear_model.LogisticRegressionsvm.LinearSVC

>>> from sklearn.svm import LinearSVC
>>> from sklearn.datasets import load_iris
>>> from sklearn.feature_selection import SelectFromModel
>>> X, y = load_iris(return_X_y=True)
>>> X.shape
(150, 4)
>>> lsvc = LinearSVC(C=0.01, penalty="l1", dual=False).fit(X, y)
>>> model = SelectFromModel(lsvc, prefit=True)
>>> X_new = model.transform(X)
>>> X_new.shape
(150, 3)

对于SVM和逻辑回归,参数C控制稀疏性:C越小,选择的特征就越少。对于Lasso,alpha参数越高,选择的特征就越少。

示例

(未完待续。。。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值