发布者认证信息(营业执照和身份证)未完善,请登录后完善信息登录
 总算知道机器学习5种特征选择的方法! - 三农网
Hi,你好,欢迎来到三农网
  • 产品
  • 求购
  • 公司
  • 展会
  • 招商
  • 资讯
当前位置: 首页 » 资讯 » 中国新农民 找商家、找信息优选VIP,安全更可靠!
总算知道机器学习5种特征选择的方法!
发布日期:2021-11-19 05:40:02  浏览次数:17

我们知道模型的性能会随着使用特征数量的增加而增加。但是,当超过峰值时,模型性能将会下降。这就是为什么我们只需要选择能够有效预测的特征的原因。

特征选择类似于降维技术,其目的是减少特征的数量,但是从根本上说,它们是不同的。区别在于要素选择会选择要保留或从数据集中删除的要素,而降维会创建数据的投影,从而产生全新的输入要素。

特征选择有很多方法,在本文中我将介绍 Scikit-Learn 中 5 个方法,因为它们是最简单但却非常有用的,让我们开始吧。

1、方差阈值特征选择

具有较高方差的特征表示该特征内的值变化大,较低的方差意味着要素内的值相似,而零方差意味着您具有相同值的要素。

方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征,使用方法我们举例说明:

import pandas as pd import seaborn as sns mpg = ('mpg').select_dtypes('number') () 

对于此示例,我仅出于简化目的使用数字特征。在使用方差阈值特征选择之前,我们需要对所有这些数字特征进行转换,因为方差受数字刻度的影响。

from  import StandardScaler scaler = StandardScaler() mpg = ((mpg), columns = ) () 

所有特征都在同一比例上,让我们尝试仅使用方差阈值方法选择我们想要的特征。假设我的方差限制为一个方差。

from  import VarianceThreshold selector = VarianceThreshold(1) (mpg) [()] 

方差阈值是一种无监督学习的特征选择方法。如果我们希望出于监督学习的目的而选择功能怎么办?那就是我们接下来要讨论的。

2、SelectKBest特征特征

单变量特征选择是一种基于单变量统计检验的方法,例如:chi2,Pearson等等。

SelectKBest 的前提是将未经验证的统计测试与基于 X 和 y 之间的统计结果选择 K 数的特征相结合。

mpg = ('mpg') mpg = ('number').dropna() #Divide the features into Independent and Dependent Variable X = ('mpg' , axis =1) y = mpg['mpg'] 

由于单变量特征选择方法旨在进行监督学习,因此我们将特征分为独立变量和因变量。接下来,我们将使用SelectKBest,假设我只想要最重要的两个特征。

from  import SelectKBest, mutual_info_regression #Select top 2 features based on mutual info regression selector = SelectKBest(mutual_info_regression, k =2) (X, y) [()]  3、递归特征消除(RFE)

递归特征消除或RFE是一种特征选择方法,利用机器学习模型通过在递归训练后消除最不重要的特征来选择特征。

根据Scikit-Learn,RFE是一种通过递归考虑越来越少的特征集来选择特征的方法。

首先对估计器进行初始特征集训练,然后通过coef_attribute或feature_importances_attribute获得每个特征的重要性。 然后从当前特征中删除最不重要的特征。在修剪后的数据集上递归地重复该过程,直到最终达到所需的要选择的特征数量。

在此示例中,我想使用泰坦尼克号数据集进行分类问题,在那里我想预测谁将生存下来。

#Load the dataset and only selecting the numerical features for example purposes titanic = ('titanic')[['survived', 'pclass', 'age', 'parch', 'sibsp', 'fare']].dropna() X = ('survived', axis = 1) y = titanic['survived'] 

我想看看哪些特征最能帮助我预测谁可以幸免于泰坦尼克号事件。让我们使用LogisticRegression模型获得最佳特征。

from  import RFE from  import LogisticRegression # #Selecting the Best important features according to Logistic Regression rfe_selector = RFE(estimator=LogisticRegression(),n_features_to_select = 2, step = 1) (X, y) [()] 

默认情况下,为RFE选择的特征数是全部特征的中位数,步长是1.当然,你可以根据自己的经验进行更改。

4、SelectFromModel 特征选择

Scikit-Learn 的 SelectFromModel 用于选择特征的机器学习模型估计,它基于重要性属性阈值。默认情况下,阈值是平均值。

让我们使用一个数据集示例来更好地理解这一概念。我将使用之前的数据。

from  import SelectFromModel sfm_selector = SelectFromModel(estimator=LogisticRegression()) (X, y) [()] 

与RFE一样,你可以使用任何机器学习模型来选择功能,只要可以调用它来估计特征重要性即可。你可以使用随机森林模或XGBoost进行尝试。

5、顺序特征选择(SFS)

顺序特征选择是一种贪婪算法,用于根据交叉验证得分和估计量来向前或向后查找最佳特征,它是 Scikit-Learn 版本中的新增功能。方法如下:

SFS-Forward 通过从零个特征开始进行功能选择,并找到了一个针对单个特征训练机器学习模型时可以最大化交叉验证得分的特征。 一旦选择了第一个功能,便会通过向所选功能添加新功能来重复该过程。当我们发现达到所需数量的功能时,该过程将停止。

让我们举一个例子说明。

from  import SequentialFeatureSelector  sfs_selector = SequentialFeatureSelector(estimator=LogisticRegression(), n_features_to_select = 3, cv =10, direction ='backward') (X, y) [()]  结论

特征选择是机器学习模型中的一个重要方面,对于模型无用的特征,不仅影响模型的训练速度,同时也会影响模型的效果。

 

VIP企业最新发布
全站最新发布
最新VIP企业
背景开启

三农网是一个开放的平台,信息全部为用户自行注册发布!并不代表本网赞同其观点或证实其内容的真实性,需用户自行承担信息的真实性,图片及其他资源的版权责任! 本站不承担此类作品侵权行为的直接责任及连带责任。

如若本网有任何内容侵犯您的权益,请联系 QQ: 1130861724

网站首页 | 实时热点 | 侵权删除 | 付款方式 | 联系方式 | 法律责任 | 网站地图 ©2022 zxb2b.com 三农网,中国大型农产品交易电商平台 鄂公网安备42018502006996 SITEMAPS | 鄂ICP备14015623号-20

返回顶部