10 特征选择
系列进度
Scikit-learn 入门 · 第 10 / 24 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
特征选择不是为了让列数越少越好,而是减少噪声、降低训练成本、提升解释性。选择规则也要被记录进实验流程。
方法类型可参考 scikit-learn feature selection 文档。
我会先保留一个不做特征选择的基线模型。只有选择后验证集更稳,才说明这一步确实有价值。
在机器学习中,特征选择是提高模型性能和可解释性的重要步骤。通过选择最相关的特征,我们可以减少模型的复杂性,降低过拟合的风险,同时提高训练和预测的速度。本节中,我们将探讨特征选择的基本概念和几种常用的方法,并通过一个简单的案例来演示如何在 Scikit-Learn 框架中实现特征选择。
特征选择的重要性
为了让模型更好地学习数据中的模式,选择合适的特征非常重要。使用过多的特征可能导致:
做特征选择时,先看方差、相关性、模型重要性、交叉验证表现和是否存在数据泄漏。
- 过拟合:模型在训练数据上表现良好,但在新数据上性能差。
- 训练时间长:更多的特征意味着更多的计算量。
- 模型解释性差:难以理解模型的决策过程。
通过特征选择,我们能够挑选出对目标变量最有影响力的特征,从而提高模型的性能和可解释性。
特征选择的方法
特征选择的方法可以分为三种主要类别:
学习《特征选择》不必一口气吃完所有细节。先挑一个能动手验证的小问题,再顺着图和正文补齐概念。
-
过滤法 (Filter methods)
基于特征的统计特性进行选择。常用方法包括卡方检验、互信息、皮尔逊相关系数等。 -
包裹法 (Wrapper methods)
使用特定的学习算法来评价特征子集的性能,逐步选取特征。典型的包裹方法包括前向选择、后向消除和递归特征消除 (RFE)。 -
嵌入法 (Embedded methods)
特征选择与模型训练同时进行。例如,LASSO 回归通过正则化选择特征,决策树模型也可自动选择重要特征。
示例:使用过滤法进行特征选择
下面我们将通过一个简单的案例来使用 Scikit-Learn 的特征选择功能。我们将使用 Iris 数据集进行特征选择。
加载必要的库和数据集
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.feature_selection import SelectKBest, chi2
加载数据集
# 加载 iris 数据集
iris = load_iris()
X = iris.data # 特征
y = iris.target # 目标变量
# 将数据转换为 DataFrame 形式以便观察
df = pd.DataFrame(X, columns=iris.feature_names)
df['target'] = y
print(df.head())
特征选择
接下来我们将对特征进行选择,选择最好的两个特征。
# 使用卡方检验选择最佳特征
selector = SelectKBest(score_func=chi2, k=2)
X_new = selector.fit_transform(X, y)
# 确认所选特征的索引
selected_features = selector.get_support(indices=True)
print("选择的特征索引:", selected_features)
print("选择的特征:", iris.feature_names[selected_features])
在上面的代码中,我们使用 SelectKBest 和卡方检验(chi2)选择了最好的两个特征。通过 get_support 方法,我们可以获得被选择特征的索引。
包裹法示例:递归特征消除(RFE)
递归特征消除是一种包裹法特征选择技术,它通过递归地训练模型并移除不重要的特征来选择特征。
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
# 递归特征消除
model = LogisticRegression(max_iter=200)
rfe = RFE(model, n_features_to_select=2)
fit = rfe.fit(X, y)
print("选择的特征:", iris.feature_names[fit.support_])
在这个例子中,我们使用逻辑回归模型来进行递归特征消除。在这个简单的示例中,我们选择了两个最重要的特征。
学完《特征选择》后,不妨换一个自己的场景试一次,重点观察输入、处理和输出是否能对应起来。
如果想把《特征选择》用到自己的任务里,可以先缩小场景,只验证一个最关键的判断点。
总结
特征选择是提高机器学习模型性能的一项重要步骤。我们可以使用过滤法、包裹法和嵌入法等不同策略来选择合适的特征。在实际工作中,特征选择的具体方法的选择往往取决于数据的特性以及具体的模型需求。
在接下来的章节中,我们将讨论更进一步的特征工程技术,即特征缩放,这对构建更有效的模型同样重要。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
特征选择适合谁读?
这是 Scikit-learn 入门 系列第 10 / 24 篇,适合正在学习Scikit-learn 入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇Scikit-learn 入门教程要多久?
按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读