- 机器学习基础
- ML - 首页
- ML - 简介
- ML - 入门
- ML - 基本概念
- ML - 生态系统
- ML - Python 库
- ML - 应用
- ML - 生命周期
- ML - 所需技能
- ML - 实现
- ML - 挑战与常见问题
- ML - 限制
- ML - 现实案例
- ML - 数据结构
- ML - 数学
- ML - 人工智能
- ML - 神经网络
- ML - 深度学习
- ML - 获取数据集
- ML - 分类数据
- ML - 数据加载
- ML - 数据理解
- ML - 数据准备
- ML - 模型
- ML - 监督学习
- ML - 无监督学习
- ML - 半监督学习
- ML - 强化学习
- ML - 监督学习 vs. 无监督学习
- 机器学习数据可视化
- ML - 数据可视化
- ML - 直方图
- ML - 密度图
- ML - 箱线图
- ML - 相关矩阵图
- ML - 散点矩阵图
- 机器学习统计学
- ML - 统计学
- ML - 均值、中位数、众数
- ML - 标准差
- ML - 百分位数
- ML - 数据分布
- ML - 偏度和峰度
- ML - 偏差和方差
- ML - 假设
- ML中的回归分析
- ML - 回归分析
- ML - 线性回归
- ML - 简单线性回归
- ML - 多元线性回归
- ML - 多项式回归
- ML中的分类算法
- ML - 分类算法
- ML - 逻辑回归
- ML - K近邻算法 (KNN)
- ML - 朴素贝叶斯算法
- ML - 决策树算法
- ML - 支持向量机
- ML - 随机森林
- ML - 混淆矩阵
- ML - 随机梯度下降
- ML中的聚类算法
- ML - 聚类算法
- ML - 基于中心点的聚类
- ML - K均值聚类
- ML - K中心点聚类
- ML - 均值漂移聚类
- ML - 层次聚类
- ML - 基于密度的聚类
- ML - DBSCAN聚类
- ML - OPTICS聚类
- ML - HDBSCAN聚类
- ML - BIRCH聚类
- ML - 亲和传播
- ML - 基于分布的聚类
- ML - 凝聚层次聚类
- ML中的降维
- ML - 降维
- ML - 特征选择
- ML - 特征提取
- ML - 后退消除法
- ML - 前向特征构建
- ML - 高相关性过滤器
- ML - 低方差过滤器
- ML - 缺失值比率
- ML - 主成分分析
- 强化学习
- ML - 强化学习算法
- ML - 利用与探索
- ML - Q学习
- ML - REINFORCE算法
- ML - SARSA强化学习
- ML - 演员-评论家方法
- 深度强化学习
- ML - 深度强化学习
- 量子机器学习
- ML - 量子机器学习
- ML - 使用Python的量子机器学习
- 机器学习杂项
- ML - 性能指标
- ML - 自动工作流
- ML - 提升模型性能
- ML - 梯度提升
- ML - 自举汇聚 (Bagging)
- ML - 交叉验证
- ML - AUC-ROC曲线
- ML - 网格搜索
- ML - 数据缩放
- ML - 训练和测试
- ML - 关联规则
- ML - Apriori算法
- ML - 高斯判别分析
- ML - 成本函数
- ML - 贝叶斯定理
- ML - 精确率和召回率
- ML - 对抗性
- ML - 堆叠
- ML - 轮次
- ML - 感知器
- ML - 正则化
- ML - 过拟合
- ML - P值
- ML - 熵
- ML - MLOps
- ML - 数据泄露
- ML - 机器学习的盈利化
- ML - 数据类型
- 机器学习 - 资源
- ML - 快速指南
- ML - 速查表
- ML - 面试问题
- ML - 有用资源
- ML - 讨论
机器学习 - 自动工作流
介绍
为了成功地执行并产生结果,机器学习模型必须自动化一些标准工作流程。自动化这些标准工作流程的过程可以在Scikit-learn管道(Pipelines)的帮助下完成。从数据科学家的角度来看,管道是一个广义但非常重要的概念。它基本上允许数据从其原始格式流向一些有用的信息。可以通过以下图表了解管道的运作方式:
ML管道的模块如下:
数据摄取 - 顾名思义,它是导入数据以用于ML项目的过程。可以从单个或多个系统实时或批量提取数据。这是最具挑战性的步骤之一,因为数据的质量会影响整个ML模型。
数据准备 - 导入数据后,我们需要准备数据以用于我们的ML模型。数据预处理是数据准备中最重要的技术之一。
ML模型训练 - 下一步是训练我们的ML模型。我们有各种ML算法,如监督学习、无监督学习、强化学习,可以从数据中提取特征并进行预测。
模型评估 - 接下来,我们需要评估ML模型。在AutoML管道的情况下,可以使用各种统计方法和业务规则来评估ML模型。
ML模型再训练 - 在AutoML管道的情况下,第一个模型不一定是最佳模型。第一个模型被认为是基线模型,我们可以重复训练它以提高模型的准确性。
部署 - 最后,我们需要部署模型。此步骤涉及将模型应用和迁移到业务运营中供其使用。
ML管道伴随的挑战
为了创建ML管道,数据科学家面临着许多挑战。这些挑战分为以下三类:
数据质量
任何ML模型的成功都严重依赖于数据的质量。如果我们提供给ML模型的数据不准确、可靠且健壮,那么我们将得到错误或误导性的输出。
数据可靠性
与ML管道相关的另一个挑战是我们提供给ML模型的数据的可靠性。众所周知,数据科学家可以从各种来源获取数据,但为了获得最佳结果,必须确保数据源是可靠且可信的。
数据可访问性
为了从ML管道中获得最佳结果,数据本身必须是可访问的,这需要整合、清理和整理数据。由于数据可访问性特性,元数据将使用新标签更新。
ML管道和数据准备建模
数据泄露,从训练数据集到测试数据集,是数据科学家在为ML模型准备数据时需要处理的一个重要问题。通常,在数据准备时,数据科学家会在学习之前对整个数据集使用标准化或归一化等技术。但是,这些技术无法帮助我们防止数据泄露,因为训练数据集会受到测试数据集中数据规模的影响。
通过使用ML管道,我们可以防止这种数据泄露,因为管道确保数据准备(如标准化)仅限于交叉验证过程的每个折叠。
示例
以下是用Python编写的示例,演示了数据准备和模型评估工作流。为此,我们使用Sklearn中的Pima印第安人糖尿病数据集。首先,我们将创建一个标准化数据的管道。然后创建一个线性判别分析模型,最后使用10倍交叉验证评估管道。
首先,导入所需的包,如下所示:
from pandas import read_csv from sklearn.model_selection import KFold from sklearn.model_selection import cross_val_score from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
现在,我们需要加载Pima糖尿病数据集,就像在之前的示例中所做的那样:
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
接下来,我们将使用以下代码创建一个管道:
estimators = [] estimators.append(('standardize', StandardScaler())) estimators.append(('lda', LinearDiscriminantAnalysis())) model = Pipeline(estimators)
最后,我们将评估此管道并输出其准确性,如下所示:
kfold = KFold(n_splits=20, random_state=7) results = cross_val_score(model, X, Y, cv=kfold) print(results.mean())
输出
0.7790148448043184
以上输出是数据集上设置的准确性摘要。
ML管道和特征提取建模
数据泄露也可能发生在ML模型的特征提取步骤中。因此,特征提取过程也应受到限制,以停止训练数据集中的数据泄露。与数据准备一样,通过使用ML管道,我们也可以防止这种数据泄露。为此,可以使用ML管道提供的工具FeatureUnion。
示例
以下是用Python编写的示例,演示了特征提取和模型评估工作流。为此,我们使用Sklearn中的Pima印第安人糖尿病数据集。
首先,使用PCA(主成分分析)提取3个特征。然后,使用统计分析提取6个特征。特征提取后,将使用
FeatureUnion工具组合多个特征选择和提取过程的结果。最后,将创建一个逻辑回归模型,并使用10倍交叉验证评估管道。
首先,导入所需的包,如下所示:
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
现在,我们需要加载Pima糖尿病数据集,就像在之前的示例中所做的那样:
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
接下来,将创建特征联合,如下所示:
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())) model = Pipeline(estimators)
最后,我们将评估此管道并输出其准确性,如下所示:
kfold = KFold(n_splits=20, random_state=7) results = cross_val_score(model, X, Y, cv=kfold) print(results.mean())
输出
0.7789811066126855
以上输出是数据集上设置的准确性摘要。