如何使用Scikit-Learn进行特征选择

使用Scikit-Learn进行特征选择

如何为您的机器学习模型选择重要特征

Timothy Muza在Unsplash上的照片

特征选择是选择与潜在问题最相关的特征。在预测性机器学习中,我们选择适合改善模型预测能力的特征。

有许多方法可以进行特征选择,包括统计分析,如卡方方法,或更高级的方法,如模型特征重要性。拥有良好的领域知识也是进行特征选择的最佳方法。

在Scikit-Learn中,我们可以使用各种函数来执行特征选择。这些函数是什么?让我们来看一下。

1. 方差阈值

最简单的特征选择方法是使用某个基准作为规则。在Scikit-Learn中,有一个名为VarianceTreshold的函数,根据方差阈值选择特征。

VarianceTreshold的目标是基于特征的均匀性选择特征。当某些特征低于方差阈值时,它们将被移除。默认情况下,VarianceTreshold还会移除方差为0的特征或只有一个值的所有特征。

从统计学上讲,方差是根据数据均值衡量数据的分布情况。方差分数表示数据在均值和其他值之间的分布范围。分数越高,数据的分布范围越广。

让我们尝试一下VarianceTreshold函数,使用一个数据集示例。首先,让我们创建一个我们将使用的简单数据集。

import pandas as pdimport numpy as npX = pd.DataFrame(    [[0, 2, 0, 3],      [0, 1, 4, 3],      [0, 1, 1, 3]], columns = 'a b c d'.split())X

在执行任何特征选择之前,让我们测量每列的方差。

for i in X.columns:    print(f'列 {i} 的方差:{np.var(X[i])}')

我们可以看到列ad的方差为0,因为它们的列中所有值都相同。相反,列c的方差最大,因为数据在那里更分散。现在,让我们使用VarianceTreshold函数执行特征选择。