简介
本实验是关于如何在 Scikit-Learn 中构建和显示管道的分步指南。
虚拟机提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会立即为你解决问题。
This tutorial is from open-source community. Access the source code
💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版
本实验是关于如何在 Scikit-Learn 中构建和显示管道的分步指南。
虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会立即为你解决问题。
在这一步中,我们将构建一个包含预处理步骤和分类器的简单管道,并展示其可视化表示。
首先,我们导入必要的模块:
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn import set_config
接下来,我们定义管道的步骤:
steps = [
("预处理", StandardScaler()),
("分类器", LogisticRegression()),
]
然后,我们创建管道:
pipe = Pipeline(steps)
最后,我们展示管道的可视化表示:
set_config(display="diagram")
pipe
在这一步中,我们将构建一个包含多个预处理步骤和一个分类器的管道,并展示其可视化表示。
首先,我们导入必要的模块:
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler, PolynomialFeatures
from sklearn.linear_model import LogisticRegression
接下来,我们定义管道的步骤:
steps = [
("标准缩放器", StandardScaler()),
("多项式特征", PolynomialFeatures(degree=3)),
("分类器", LogisticRegression(C=2.0)),
]
然后,我们创建管道:
pipe = Pipeline(steps)
最后,我们展示管道的可视化表示:
pipe
在这一步中,我们将构建一个带有降维步骤和分类器的管道,并展示其可视化表示。
首先,我们导入必要的模块:
from sklearn.pipeline import Pipeline
from sklearn.svm import SVC
from sklearn.decomposition import PCA
接下来,我们定义管道的步骤:
steps = [("降维", PCA(n_components=4)), ("分类器", SVC(kernel="linear"))]
然后,我们创建管道:
pipe = Pipeline(steps)
最后,我们展示管道的可视化表示:
pipe
在这一步中,我们将构建一个带有列变换器和分类器的复杂管道,并展示其可视化表示。
首先,我们导入必要的模块:
import numpy as np
from sklearn.pipeline import make_pipeline
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.linear_model import LogisticRegression
接下来,我们定义数值型和分类型特征的预处理步骤:
numeric_preprocessor = Pipeline(
steps=[
("均值插补", SimpleImputer(missing_values=np.nan, strategy="mean")),
("缩放器", StandardScaler()),
]
)
categorical_preprocessor = Pipeline(
steps=[
(
"常量插补",
SimpleImputer(fill_value="缺失", strategy="constant"),
),
("独热编码", OneHotEncoder(handle_unknown="ignore")),
]
)
然后,我们创建列变换器:
preprocessor = ColumnTransformer(
[
("分类型", categorical_preprocessor, ["州", "性别"]),
("数值型", numeric_preprocessor, ["年龄", "体重"]),
]
)
接下来,我们创建管道:
pipe = make_pipeline(preprocessor, LogisticRegression(max_iter=500))
最后,我们展示管道的可视化表示:
pipe
在这一步中,我们将对带有分类器的管道进行网格搜索,并展示其可视化表示。
首先,我们导入必要的模块:
import numpy as np
from sklearn.pipeline import make_pipeline
from sklearn.pipeline import Pipeline
from sklearn.impute import SimpleImputer
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
接下来,我们定义数值型和分类型特征的预处理步骤:
numeric_preprocessor = Pipeline(
steps=[
("均值插补", SimpleImputer(missing_values=np.nan, strategy="mean")),
("缩放器", StandardScaler()),
]
)
categorical_preprocessor = Pipeline(
steps=[
(
"常量插补",
SimpleImputer(fill_value="缺失", strategy="constant"),
),
("独热编码", OneHotEncoder(handle_unknown="ignore")),
]
)
然后,我们创建列变换器:
preprocessor = ColumnTransformer(
[
("分类型", categorical_preprocessor, ["州", "性别"]),
("数值型", numeric_preprocessor, ["年龄", "体重"]),
]
)
接下来,我们创建管道:
pipe = Pipeline(
steps=[("预处理", preprocessor), ("分类器", RandomForestClassifier())]
)
然后,我们定义网格搜索的参数网格:
param_grid = {
"分类器__n_estimators": [200, 500],
"分类器__max_features": ["auto", "sqrt", "log2"],
"分类器__max_depth": [4, 5, 6, 7, 8],
"分类器__criterion": ["gini", "entropy"],
}
最后,我们创建网格搜索:
grid_search = GridSearchCV(pipe, param_grid=param_grid, n_jobs=1)
并展示网格搜索的可视化表示:
grid_search
本实验提供了一份关于如何在 Scikit-Learn 中构建和展示管道的分步指南。我们涵盖了带有预处理步骤和分类器的简单管道、链接多个预处理步骤和一个分类器的管道、带有降维和一个分类器的管道、链接列变换器和一个分类器的复杂管道,以及对带有分类器的管道进行网格搜索。