news 2026/4/16 7:14:21

机器学习 - 自动化工作流

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
机器学习 - 自动化工作流

摘要:本文介绍了机器学习管道(Pipeline)的概念及其在数据科学工作流中的重要性。管道通过标准化流程实现从数据摄入到模型部署的全过程自动化,包含数据准备、模型训练、评估和再训练等关键环节。文章分析了数据质量、可靠性和可访问性三大挑战,并通过两个Python实例(使用Scikit-learn的皮马印第安人糖尿病数据集)演示了如何利用管道防止数据泄露:第一个示例展示标准化和线性判别分析的管道实现(准确率77.9%),第二个示例展示通过FeatureUnion结合PCA和特征选择的逻辑回归模型(准确率77.89%)。这些案例验证了管道在确保数据准备和特征提取过程隔离方面的有效性。

目录

引言

机器学习管道的组成部分如下:

机器学习管道面临的挑战

数据质量

数据可靠性

数据可访问性

机器学习管道建模与数据准备

示例

输出结果

机器学习管道建模与特征提取

示例

输出结果


引言

为了成功执行并生成结果,机器学习模型必须自动化一些标准工作流。借助 Scikit-learn 管道(Pipelines),可以实现这些标准工作流的自动化。从数据科学家的角度来看,管道是一个具有普遍性但至关重要的概念。它本质上允许数据从原始格式转化为有用的信息。管道的工作原理可通过以下图表理解:数据摄入→数据准备→机器学习模型训练→模型评估→模型部署→机器学习模型再训练

机器学习管道的组成部分如下:

  1. 数据摄入:顾名思义,这是导入数据以供机器学习项目使用的过程。数据可以实时或批量地从单个或多个系统中提取。这是最具挑战性的步骤之一,因为数据质量会影响整个机器学习模型。
  2. 数据准备:导入数据后,需要对数据进行预处理,使其适用于机器学习模型。数据预处理是数据准备中最重要的技术之一。
  3. 机器学习模型训练:下一步是训练机器学习模型。我们有多种机器学习算法,如监督学习、无监督学习、强化学习等,可用于从数据中提取特征并进行预测。
  4. 模型评估:之后,需要对机器学习模型进行评估。在自动化机器学习(AutoML)管道中,可以借助各种统计方法和业务规则对机器学习模型进行评估。
  5. 机器学习模型再训练:在自动化机器学习管道中,第一个模型未必是最佳模型。第一个模型会被视为基准模型,我们可以对其进行重复训练,以提高模型的准确性。
  6. 部署:最后,需要部署模型。这一步骤包括将模型应用并迁移到业务运营中,供其使用。

机器学习管道面临的挑战

创建机器学习管道时,数据科学家会遇到诸多挑战。这些挑战主要分为以下三类:

数据质量

任何机器学习模型的成功都在很大程度上依赖于数据质量。如果提供给机器学习模型的数据不准确、不可靠且不稳健,那么最终将会得到错误或具有误导性的输出结果。

数据可靠性

机器学习管道面临的另一个挑战是所提供数据的可靠性。众所周知,数据科学家可以通过多种来源获取数据,但为了获得最佳结果,必须确保这些数据来源是可靠且可信的。

数据可访问性

要从机器学习管道中获得最佳结果,数据本身必须具有可访问性,这就需要对数据进行整合、清洗和整理。由于数据具有可访问性这一特性,元数据会通过新的标签进行更新。

机器学习管道建模与数据准备

在为机器学习模型准备数据时,数据科学家需要处理的一个重要问题是训练数据集向测试数据集的数据泄露。通常,在数据准备阶段,数据科学家会在模型训练前对整个数据集使用标准化或归一化等技术。但这些技术无法帮助我们避免数据泄露,因为训练数据集会受到测试数据集中数据尺度的影响。通过使用机器学习管道,可以防止这种数据泄露,因为管道能确保数据准备(如标准化)仅限于交叉验证过程的每个折(fold)。

示例

以下是一个 Python 示例,展示了数据准备和模型评估的工作流。本示例使用 Scikit-learn 中的皮马印第安人糖尿病数据集(Pima Indian Diabetes dataset)。首先,我们将创建一个用于标准化数据的管道;然后,构建一个线性判别分析(Linear Discriminant Analysis)模型;最后,使用 20 折交叉验证对管道进行评估。首先,导入所需的库:

接下来,按照之前的示例加载皮马印第安人糖尿病数据集:

然后,通过以下代码创建管道:

estimators = [] estimators.append(('standardize', StandardScaler())) estimators.append(('lda', LinearDiscriminantAnalysis())) model = Pipeline(estimators)

最后,评估该管道并输出其准确率:

kfold = KFold(n_splits=20, random_state=7, shuffle=True) # 添加shuffle=True以确保结果可复现(Scikit-learn 1.2+版本) results = cross_val_score(model, X, Y, cv=kfold) print(results.mean())
输出结果

plaintext

0.7790148448043184

上述输出结果是该设置在数据集上的准确率汇总。

机器学习管道建模与特征提取

在机器学习模型的特征提取阶段也可能发生数据泄露。因此,特征提取过程也应受到限制,以防止训练数据集中出现数据泄露。与数据准备阶段类似,通过使用机器学习管道,也可以防止这种数据泄露。管道提供的工具 FeatureUnion(特征联合)可用于此目的。

示例

以下是一个 Python 示例,展示了特征提取和模型评估的工作流。本示例同样使用 Scikit-learn 中的皮马印第安人糖尿病数据集。首先,通过主成分分析(PCA)提取 3 个特征;然后,通过统计分析提取 6 个特征;特征提取后,使用 FeatureUnion 工具组合多个特征选择和提取过程的结果;最后,构建一个逻辑回归(Logistic Regression)模型,并使用 20 折交叉验证对管道进行评估。首先,导入所需的库:

from pandas import read_csv from sklearn.model_selection import KFold from sklearn.model_selection import cross_val_score from sklearn.pipeline import Pipeline from sklearn.pipeline import FeatureUnion from sklearn.linear_model import LogisticRegression from sklearn.decomposition import PCA from sklearn.feature_selection import SelectKBest

接下来,按照之前的示例加载皮马印第安人糖尿病数据集:

path = r"C:\pima-indians-diabetes.csv" headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] data = read_csv(path, names=headernames) array = data.values X = array[:, 0:8] Y = array[:, 8]

然后,创建特征联合:

features = [] features.append(('pca', PCA(n_components=3))) features.append(('select_best', SelectKBest(k=6))) feature_union = FeatureUnion(features)

接下来,通过以下代码创建管道:

estimators = [] estimators.append(('feature_union', feature_union)) estimators.append(('logistic', LogisticRegression(max_iter=1000))) # 增加max_iter以确保模型收敛 model = Pipeline(estimators)

最后,评估该管道并输出其准确率:

kfold = KFold(n_splits=20, random_state=7, shuffle=True) # 添加shuffle=True以确保结果可复现(Scikit-learn 1.2+版本) results = cross_val_score(model, X, Y, cv=kfold) print(results.mean())
输出结果

plaintext

0.7789811066126855

上述输出结果是该设置在数据集上的准确率汇总。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 14:17:07

步进伺服电机控制程序: 1.步进电机的正转、反转控制 2.相对和绝对位置运动 3.电机复位找回...

步进伺服电机控制程序: 1.步进电机的正转、反转控制 2.相对和绝对位置运动 3.电机复位找回零点功能 4.设置速度(周期) 步进电机控制,伺服电机控制 硬件:1西门子S7-200PLC2.威伦触摸屏3.步进电机驱动器(不限制厂家)最近在给某包装机做升级改造时,遇到了步进伺服电机的…

作者头像 李华
网站建设 2026/4/15 16:26:05

Qwen3-0.6B情感分析实战:搭建舆情监控系统的可行性验证

Qwen3-0.6B情感分析实战:搭建舆情监控系统的可行性验证 1. 引言 1.1 舆情监控的技术背景与挑战 在社交媒体高度发达的今天,企业、政府机构乃至公众人物对网络舆情的敏感度日益提升。及时掌握用户评论、新闻报道、论坛讨论中的情绪倾向,已成…

作者头像 李华
网站建设 2026/4/11 21:31:08

Unity游戏自动翻译终极解决方案:XUnity.AutoTranslator深度解析

Unity游戏自动翻译终极解决方案:XUnity.AutoTranslator深度解析 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为游戏多语言本地化而烦恼吗?XUnity.AutoTranslator作为业界领…

作者头像 李华
网站建设 2026/4/1 7:25:07

实战Java微信小程序商城:一套代码玩转多端SaaS架构

Java微信小程序商城源码,Java微信开发框架源码,saas模式,前后端分离小程序商城源码 需要看演示的,咨询客服。 使用高性能的Java语言开发,采用目前流行的微服务前后端分离框架,拥有完整的后台,小…

作者头像 李华
网站建设 2026/4/15 14:51:58

基于Matlab的车牌识别系统:模板匹配与神经网络的探索

基于matlab的车牌识别系统,可以用模板匹配设计也可以用网络神经算法,全网最全资料在智能交通日益发展的今天,车牌识别系统成为了一个热门的研究与应用领域。Matlab以其强大的矩阵运算能力和丰富的工具箱,为我们实现车牌识别系统提…

作者头像 李华