连接多种特征提取方法

Machine LearningMachine LearningBeginner
立即练习

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

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

简介

在本实验中,我们将学习如何使用 Python 的 scikit-learn 库连接多种特征提取方法。我们将使用 FeatureUnion 变换器来组合通过主成分分析(PCA)和单变量选择获得的特征。使用此变换器组合特征的好处是,它允许在整个过程中进行交叉验证和网格搜索。

虚拟机提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 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/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) sklearn(("Sklearn")) -.-> sklearn/AdvancedDataAnalysisandDimensionalityReductionGroup(["Advanced Data Analysis and Dimensionality Reduction"]) 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/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/pipeline("Pipeline") sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/model_selection("Model Selection") sklearn/AdvancedDataAnalysisandDimensionalityReductionGroup -.-> sklearn/decomposition("Matrix Decomposition") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/svm -.-> lab-49129{{"连接多种特征提取方法"}} sklearn/feature_selection -.-> lab-49129{{"连接多种特征提取方法"}} sklearn/pipeline -.-> lab-49129{{"连接多种特征提取方法"}} sklearn/model_selection -.-> lab-49129{{"连接多种特征提取方法"}} sklearn/decomposition -.-> lab-49129{{"连接多种特征提取方法"}} sklearn/datasets -.-> lab-49129{{"连接多种特征提取方法"}} ml/sklearn -.-> lab-49129{{"连接多种特征提取方法"}} end

导入库

我们将首先导入所需的库。我们将使用 scikit-learn 的 Pipeline(管道)、FeatureUnion(特征联合)、GridSearchCV(网格搜索交叉验证)、SVC(支持向量分类器)、load_iris(加载鸢尾花数据集)、PCA(主成分分析)和 SelectKBest(选择最佳的 K 个特征)类。

from sklearn.pipeline import Pipeline, FeatureUnion
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
from sklearn.feature_selection import SelectKBest

加载数据集

接下来,我们将使用 load_iris 函数加载鸢尾花数据集。

iris = load_iris()

X, y = iris.data, iris.target

特征提取

由于鸢尾花数据集是高维的,我们将使用主成分分析(PCA)和单变量选择来进行特征提取。

主成分分析(PCA)

我们将使用主成分分析(PCA)来降低数据集的维度。

pca = PCA(n_components=2)

单变量选择

我们将使用单变量选择来挑选出最显著的特征。

selection = SelectKBest(k=1)

组合特征

我们将使用 FeatureUnion 变换器来组合从主成分分析(PCA)和单变量选择中获得的特征。

combined_features = FeatureUnion([("pca", pca), ("univ_select", selection)])

转换后的数据集

我们将使用组合特征来转换数据集。

X_features = combined_features.fit(X, y).transform(X)
print("Combined space has", X_features.shape[1], "features")

模型训练

我们将使用转换后的数据集训练一个支持向量机(SVM)模型。

svm = SVC(kernel="linear")

网格搜索

我们将使用 GridSearchCV 对管道的超参数进行网格搜索。

pipeline = Pipeline([("features", combined_features), ("svm", svm)])

param_grid = dict(
    features__pca__n_components=[1, 2, 3],
    features__univ_select__k=[1, 2],
    svm__C=[0.1, 1, 10],
)

grid_search = GridSearchCV(pipeline, param_grid=param_grid, verbose=10)
grid_search.fit(X, y)
print(grid_search.best_estimator_)

总结

在本实验中,我们学习了如何使用 Python 的 scikit-learn 库来连接多种特征提取方法。我们使用 FeatureUnion 变换器来组合通过主成分分析(PCA)和单变量选择获得的特征。我们还训练了一个支持向量机(SVM)模型,并对管道的超参数进行了网格搜索。