机器学习系列 16:使用 scikit-learn 的 Pipeline

在机器学习项目中,我们经常需要进行大量的数据预处理步骤,最后用处理干净的数据集来拟合机器学习算法得到一个合适的机器学习模型。

scikit-learn 提供了一个强大的 Pipeline 类来帮助我们将所有的数据预处理步骤和训练模型的步骤串起来。就像流水线一样,前一个步骤处理完的结果输入到下一个步骤,依次处理。

这里我们将使用 UCI 提供的威斯康星洲乳腺癌数据集,下载地址如下:

https://archive.ics.uci.edu/dataset/17/breast+cancer+wisconsin+diagnostic

这个数据集一共包含 569 个样本,每个样本有 30 个实数值特征,数据集的前 2 列分别是标识病人的 ID 和肿瘤诊断结果(M 表示恶性,B 表示良性)。让我们首先加载数据集,然后抽取出特征 X 和类别 y,我们还用了 scikit-learn 提供的 LabelEncoder 将字符串表示的样本类别编码成数字表示。

现在我们已经将 M 编码成 1,B 编码成 0。

然后我们将数据集拆分成训练集和测试集,其中训练集占 80%,测试集占 20%。

许多机器学习算法要求输入的特征的取值范围都在同一个范围内,由于这里的数据集中的特征是以不同的度量标准测到的,所以我们需要标准化特征。然后,假设我们还要将这 30 维的高维数据通过 PCA 压缩到 2 维空间。最后我们用数据集拟合逻辑回归算法得到一个二分类模型。

我们可以通过 make_pipeline 函数将中上述步骤中涉及的标准化、PCA 和训练模型串到一个管道(pipeline)中。

make_pipeline 函数可以接收任意数量的 scikit-learn transformer(包含 fit 和 trasnform 方法的对象),最后跟一个 scikit-learn estimator(实现了 fit 和 predict 方法的对象)。

在前面的例子中,StandardScaler() 和 PCA() 就是 transformer,LogisticRegression 就是 estimator。

在我调用 pipe_lr 的 fit 方法时,Pipeline 会先调用 transformer 的 fit_transform 方法(fit_transform 方法其实先调用 fit 再调用 transform),然后调用 estimator 的 fit 方法来训练模型。

如果我们在 Pipeline 的最后加了一个 estimator,那么我们可以通过调用 pipe_lr 的 predict 方法来对新数据进行同样的预处理,然后对预处理后的新数据进行预测。

通过上图我们可以看到 Pipeline 将数据预处理和训练模型这些步骤串联起来,使得我们从头到尾就像在使用一个对象一样。

相关推荐
用户3521802454752 分钟前
🕸️ GraphRAG 图数据质量评估:让你的知识图谱不再“翻车”!
人工智能·python·ai编程
大千AI助手21 分钟前
残差:从统计学到深度学习的核心概念
人工智能·深度学习·resnet·统计学·方差分析·残差·残差分析
yzx99101329 分钟前
豆包、Kimi、通义千问、DeepSeek、Gamma、墨刀 AI”六款主流大模型(或 AI 平台)生成 PPT 的完整流程
人工智能·powerpoint·墨刀
max50060044 分钟前
使用OmniAvatar-14B模型实现照片和文字生成视频的完整指南
图像处理·人工智能·深度学习·算法·音视频
可触的未来,发芽的智生1 小时前
追根索源-神经网络的灾难性遗忘原因
人工智能·神经网络·算法·机器学习·架构
CAE3201 小时前
基于Ncode的新能源汽车电池包随机振动疲劳分析
人工智能·汽车·电池包·hypermesh·振动疲劳·optistruct
zzywxc7871 小时前
自动化测试框架是软件测试的核心基础设施,通过预设规则和脚本自动执行测试用例,显著提高测试效率和覆盖率。
运维·人工智能·自动化·prompt·测试用例·流程图
尺度商业1 小时前
2025服贸会“海淀之夜”,点亮“科技”与“服务”底色
大数据·人工智能·科技
AWS官方合作商1 小时前
涂鸦智能携手亚马逊云科技,以全球基础设施与生成式AI加速万物智联时代到来
人工智能·科技·aws·亚马逊云科技
FunTester1 小时前
拥抱直觉与创造力:走进VibeCoding的新世界
人工智能·语言模型·编程·vibecoding