递归特征消除

Machine LearningMachine LearningBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将学习如何使用递归特征消除(RFE)进行特征选择。我们将使用 Python 中的 Scikit-Learn 库来执行此任务。特征选择是机器学习中的一个重要步骤,通过去除不相关或冗余的特征来提高模型性能。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,请随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/DataPreprocessingandFeatureEngineeringGroup(["Data Preprocessing and Feature Engineering"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/svm("Support Vector Machines") sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/feature_selection("Feature Selection") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/svm -.-> lab-49267{{"递归特征消除"}} sklearn/feature_selection -.-> lab-49267{{"递归特征消除"}} sklearn/datasets -.-> lab-49267{{"递归特征消除"}} ml/sklearn -.-> lab-49267{{"递归特征消除"}} end

加载数据集并分割数据

首先,我们将使用 Scikit-Learn 库加载数字数据集。这个数据集由 0 到 9 的数字的 8x8 图像组成。每个图像都表示为一个 64 个特征的数组。我们将把数据分割为特征和目标变量。

from sklearn.datasets import load_digits
digits = load_digits()
X = digits.images.reshape((len(digits.images), -1))
y = digits.target

创建 RFE 对象并拟合数据

接下来,我们将创建一个 RFE 类的对象,并将数据拟合到该对象上。我们将使用具有线性核的支持向量分类器(SVC)作为估计器。我们将每次选择一个特征,并每次前进一个步骤。

from sklearn.svm import SVC
from sklearn.feature_selection import RFE

svc = SVC(kernel="linear", C=1)
rfe = RFE(estimator=svc, n_features_to_select=1, step=1)
rfe.fit(X, y)

对特征进行排序

将数据拟合到 RFE 对象之后,我们可以根据特征的重要性对其进行排序。我们将使用 RFE 对象的 ranking_ 属性来获取特征排名。我们还将重塑排名,使其与原始图像的形状相匹配。

ranking = rfe.ranking_.reshape(digits.images[0].shape)

可视化特征排名

最后,我们将使用 Matplotlib 库绘制特征排名。我们将使用 matshow() 函数将排名显示为图像。我们还将为绘图添加颜色条和标题。

import matplotlib.pyplot as plt

plt.matshow(ranking, cmap=plt.cm.Blues)
plt.colorbar()
plt.title("Ranking of pixels with RFE")
plt.show()

总结

在本实验中,我们学习了如何使用递归特征消除(RFE)进行特征选择。我们使用 Python 中的 Scikit-Learn 库加载数字数据集、创建 RFE 对象、拟合数据、对特征进行排名以及可视化特征排名。