python相关性分析特征过滤_一文学会在Python中利用过滤器方法进行深度学习特征选择...

d000baa1cd11728b9dfd6675c5fcc3cec2fd2c91.jpg数据观世界

引言

机器学习和深度学习算法都是从由不同类型的特征组成的数据中学习。机器学习算法的训练时间和性能在很大程度上取决于数据集中的特征。理想情况下,我们应该只在数据集中保留那些实际上有助于我们的机器学习模型学习的东西。

不必要的冗余特征不仅减慢了算法的训练时间,而且还影响了算法的性能。选择用于训练机器学习模型的最合适特征的过程称为“特征选择”。

在训练机器学习模型之前执行特征选择主要由以下几个方面的好处:

具有较少特征的模型具有较高的可解释性具有较少特征的机器学习模型更容易较少的特征可以增强泛化,减少过度拟合特征选择可消除数据冗余具有较少特征的模型的训练时间显着降低具有较少特征的模型不容易出错人们已经提出了多种方法来为机器学习算法选择最佳特征,其中一类方法称为过滤器方法。在本文中,我们将学习一些用于特征选择的基本过滤方法。

特征选择的过滤器方法

过滤器方法属于特征选择方法的一种类别,其可以选择独立于机器学习算法模型之外的特征,使用过滤方法选择的特征可用作任何机器学习模型的输入,这是过滤方法的最大优点之一。过滤器方法的另一个优点是速度非常快。

过滤器方法可大致分为两类:单变量过滤器方法和多变量过滤器方法。

单变量过滤器方法是根据特定标准对各个特征进行排序,然后选择前N个特征。可以将不同类型的排名标准用于单变量过滤器方法,例如费舍尔得分(fisher score),互信息(mutual information)和特征方差。

单变量滤波器方法的主要缺点之一是它可能会选择冗余特征,因为在做出决策时不考虑各个特征之间的关系,单变量滤波器方法非常适合从数据中去除常量和准常量特征。

多变量过滤器方法能够考虑特征之间的相互关系,从数据中删除冗余特征。

在本文中,我们将看到如何在Python的帮助下从数据集中删除常量,准常量,重复和相关的特征。

一、删除常量特征

常量特征是仅包含数据集中所有输出的一个值的特征,其不提供任何有助于对记录进行分类的信息。因此,建议从数据集中删除所有常量特征。

让我们看看如何从数据集中删除常量特征。我们采用的数据集是Santandar Customer Satisfaction数据集,可以从Kaggle下载,我们将使用“train.csv”。但是,为了方便,我们将其重命名为“santandar_data.csv”。

导入所需的库和数据集

常量特征的值具有零方差,因为所有值都相同。我们可以使用Python的Scikit Learn库的VarianceThreshold函数找到常量列。执行以下代码以导入所需的库和数据集:

u=4187830948,512962026&fm=173&app=49&f=JPEG?w=640&h=110&s=B8D6A1444EE4BF745E71148B0000E0C9

在输出中,您应该看到(40000,371),这意味着我们的数据集中有4万行和371列。

将数据拆分为训练集和测试集

需要注意的是,为了避免过拟合,特征选择应仅应用于训练集。我们将数据划分为训练和测试集。执行以下脚本:

u=3858423583,3905360682&fm=173&app=49&f=JPEG?w=640&h=79

使用方差阈值删除常量特征

为删除常量特征,我们将使用之前导入的VarianceThreshold函数。该函数需要输入阈值参数的值,为参数传递零值将过滤所有具有零方差的特征。 执行以下脚本以创建常量特征的过滤器:

consta

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python,可以使用sklearn.feature_selection模块的SelectKBest方法进行相关性分析特征选择。这个方法主要是根据互信息法来选择最佳特征。使用SelectKBest方法需要注意以下两点: 1. 区分离散数据和连续数据:在进行特征选择时,需要考虑特征的类型,即特征是离散型数据还是连续型数据。 2. 输出索引或特征名:SelectKBest方法的输出一般为特征的索引,但如果只获得索引对于特征量大的数据集来说不够友好,需要想办法获得特征的名称。 下面是一个示例代码,展示了如何使用SelectKBest方法进行相关性分析特征选择: ``` from sklearn.feature_selection import SelectKBest, mutual_info_classif # 创建SelectKBest对象,指定使用互信息法进行特征选择 selector = SelectKBest(score_func=mutual_info_classif, k=12) # 使用fit方法进行特征选择,传入特征矩阵X和目标变量y selector.fit(X, y) # 通过get_support方法获取选择的特征的索引 selected_features_indices = selector.get_support(indices=True) # 根据索引从原始特征矩阵X选择特征 selected_features = X[:, selected_features_indices] ``` 这段代码演示了在相关性分析特征选择使用互信息法的方法。首先,创建了一个SelectKBest对象,并指定score_func参数为mutual_info_classif,k参数为希望选择的特征数量。然后,使用fit方法特征矩阵X和目标变量y进行特征选择。最后,通过get_support方法获取选择的特征的索引,再根据索引从原始特征矩阵X选择特征。 希望以上内容对您有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值