本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
开始使用 Data Wrangler
亚马逊 SageMaker Data Wrangler 是亚马逊 SageMaker Studio 的一项功能。使用本节学习如何访问和开始使用 Data Wrangler。执行以下操作:
先决条件
要使用 Data Franger,您必须满足以下先决条件。
-
要使用 Data Wranger,您需要访问Amazon EC2)实例。有关您可以使用的 Amazon EC2 实例的更多信息,请参阅 “”实例” 要了解如何查看您的配额并在必要时申请增加配额,请参阅Amazon服务配额。
-
配置中所述的所需权限安全和权限。
要使用 Data Wrangler,你需要一个活跃的 Studio 实例。要了解如何启动新实例,请参阅加入亚马逊 SageMaker 域名。当您的 Studio 实例准备就绪时,请按照中的说明进行操作访问数据管理器。
访问数据管理器
以下过程假设您已经完成了先决条件。
要在 Studio 中访问 Data Wrangler,请执行以下操作。
-
登录到 Studio。有关更多信息,请参阅加入亚马逊 SageMaker 域名:
-
选择工作室。
-
选择 “启动应用程序”。
-
从下拉列表中选择 Studio。
-
选择主页图标。
-
选择 Data (数据)。
-
选择 Data Wrangler。
-
您还可以通过执行以下操作创建 Data Franger 流程。
-
在顶部导航栏中,选择文件。
-
选择 “新建”。
-
选择 Data Wrangler Flow。
-
-
(可选)重命名新目录和.flow 文件。
-
当你在 Studio 中创建新的.flow 文件时,你可能会看到一个向你介绍 Data Wrangler 的旋转木马。
这可能需要几分钟时间。
只要您的用户详细信息页面上的KernelGateway应用程序处于待处理状态,此消息就会一直存在。要查看此应用程序的状态,请在 SageMaker 控制台的 Amazon SageMaker Studio 页面上,选择您用于访问 Studio 的用户的姓名。在 “用户详细信息” 页面上,您会在 “KernelGateway应用程序” 下看到一个应用程序。等到此应用程序状态为 “准备就绪” 开始使用 Data Wrangler。首次启动 Data Wrangler 时,这可能需要大约 5 分钟。
-
首先,请选择一个数据源并使用它来导入数据集。导入要了解更多信息,请参阅。
当您导入数据集时,它会出现在您的数据流中。要了解更多信息,请参阅 创建和使用 Data Wrangler 流程。
-
导入数据集后,Data Wrangler 会自动推断每列中的数据类型。选择 “数据类型” 步骤旁边的 +,然后选择 “编辑数据类型”。
重要
将转换添加到 “数据类型” 步骤后,您无法使用更新类型批量更新列类型。
-
要导出完整的数据流,请选择导出并选择导出选项。要了解更多信息,请参阅 Export。
-
最后,选择组件和注册表图标,然后从下拉列表中选择 Data Wrangler 以查看您创建的所有.flow 文件。您可以使用此菜单查找数据流并在数据流之间移动。
启动 Data Wrangler 后,您可以使用以下部分来介绍如何使用 Data Wrangler 创建 ML 数据准备流程。
更新 Data Wrangler
我们建议您定期更新 Data Wrangler Studio 应用程序,以访问最新功能和更新。Data Wrangler 应用程序名称以开头sagemaker-data-wrang。要了解如何更新 Studio 应用程序,请参阅关闭并更新 Studio 应用程序。
演示:Data Wrangler 泰坦尼克号数据集攻略
以下部分将介绍如何开始使用 Data Franger。本演练假设您已经按照中的步骤操作,访问数据管理器并已打开一个打算用于演示的新数据流文件。您可能需要将此.flow 文件重命名为类似的名称titanic-demo.flow
。
本演练使用泰坦尼克号数据集
在本教程中,您将执行以下步骤。
-
请执行下列操作之一:
-
打开 Data Wrangler 流程并选择 “使用示例数据集”。
-
将泰坦尼克号数据集
上传到 Amazon Simple Storage Service (Amazon S3),然后将数据集导入到 Data Wrangle。
-
-
使用 Data Wrangler 分析来分析此数据集。
-
使用 Data Wrangler 数据转换定义数据流。
-
将您的流程导出到 Jupyter 笔记本,您可以使用它来创建 Data Wrangler 作业。
-
处理您的数据,然后开始 SageMaker 训练工作以训练 XGBoost 二进制分类器。
将数据集上传到 S3 并导入
首先,您可以使用以下方法之一将泰坦尼克号数据集导入到 Data Wrangler:
-
直接从 Data Wrangler 流程中导入数据集
-
将数据集上传到 Amazon S3 然后将其导入 Data Wrangler
要将数据集直接导入 Data Wrangler,请打开流程并选择使用示例数据集。
将数据集上传到 Amazon S3 并将其导入 Data Wrangler 更接近于您导入自己的数据的体验。以下信息告诉您如何上传和导入数据集。
在开始将数据导入 Data Wrangler 之前,请下载 Titanic 数据集
如果您是 Amazon S3 的新用户,则可以在 Amazon S3 控制台中使用拖放操作来完成此操作。要了解操作方法,请参阅亚马逊 Simp le Storage Service 用户指南中的 “使用拖放上传文件和文件夹”。
重要
将您的数据集上传到要用于完成此演示的同一Amazon区域的 S3 存储桶。
将您的数据集成功上传到 Amazon S3 后,您可以将其导入 Data Wrangler。
将泰坦尼克号数据集导入 Data Wrangler
-
在 “数据流” 选项卡中选择 “导入数据” 按钮或选择 “导入” 选项卡。
-
选择 Amazon S3。
-
使用 “从 S3 导入数据集” 表查找您向其中添加 Titanic 数据集的存储桶。选择 Titanic 数据集 CSV 文件打开详细信息窗格。
-
在 “详细信息” 下,文件类型应为 CSV。选中第一行是标题以指定数据集的第一行是标题。您也可以将数据集命名为更友好的名称,例如
Titanic-train
。 -
选择 “导入” 按钮。
当您的数据集导入 Data Wrangler 时,它会显示在 “数据流” 选项卡中。您可以双击节点进入节点详细视图,该视图允许您添加转换或分析。您可以使用加号图标快速访问导航。在下一部分中,您将使用此数据流添加分析和转换步骤。
数据流
在数据流部分中,数据流中的唯一步骤是您最近导入的数据集和数据类型步骤。应用转换后,您可以返回此选项卡并查看数据流是什么样子。现在,在 “准备” 和 “分析” 选项卡下添加一些基本转换。
准备和可视化
Data Wrangler 具有内置的转换和可视化功能,可用于分析、清理和转换数据。
节点详细信息视图的数据选项卡列出了右侧面板中的所有内置转换,其中还包含一个可以在其中添加自定义转换的区域。以下用例展示了如何使用这些转换。
要获取可能有助于您进行数据探索和特征工程的信息,请创建数据质量和见解报告。报告中的信息可以帮助您清理和处理数据。它为您提供诸如缺失值数量和异常值数量之类的信息。如果你的数据有问题,例如目标泄漏或不平衡,见解报告可以提请你注意这些问题。有关创建报告的更多信息,请参阅 “”获取有关数据和数据质量的见解。
数据探索
首先,使用分析创建数据摘要。执行以下操作:
-
选择数据流中 “数据类型” 步骤旁边的 +,然后选择 “添加分析”。
-
在分析区域中,从下拉列表中选择表格摘要。
-
为表格摘要命名。
-
选择 “预览” 以预览将要创建的表。
-
选择 “保存” 将其保存到您的数据流中。它出现在 “所有分析” 下。
使用您看到的统计数据,您可以对该数据集进行与以下类似的观测结果:
-
平均票价(平均值)约为33美元,而最高票价超过500美元。该列可能有异常值。
-
这个数据集使用? 以表示缺失的值。许多列都有缺失的值:c ab in、dearme d 和 home.dest
-
年龄类别缺少超过 250 个值。
接下来,使用从这些统计数据中获得的见解来清理数据。
删除未使用的列
使用上一节中的分析,清理数据集以准备训练。要向数据流添加新转换,请选择数据流中 “数据类型” 步骤旁边的 +,然后选择 “添加转换”。
首先,删除不想用于训练的列。您可以使用 pandas
使用以下步骤删除未使用的列。
删除未使用的列。
-
打开 Data Wrangler 流程。
-
你的 Data Wrangler 流程中有两个节点。选择 “数据类型” 节点右侧的 +。
-
选择 “添加转换”。
-
在所有步骤列中,选择添加步骤。
-
在标准转换列表中,选择管理列。标准转换是现成的内置转换。确保选择 “删除” 列。
-
在 “要删除的列” 下,检查以下列名:
-
舱
-
票
-
name
-
sibsp
-
烘干
-
主页.dest
-
船
-
body
-
-
选择 “预览”。
-
验证列是否已删除,然后选择 “添加”。
要使用熊猫执行此操作,请按照以下步骤操作。
-
在所有步骤列中,选择添加步骤。
-
在 “自定义转换” 列表中,选择 “自定义转换”。
-
为您的转换提供一个名称,然后从下拉列表中选择 Python (Pandas)。
-
在代码框中输入以下 Python 脚本。
cols = ['name', 'ticket', 'cabin', 'sibsp', 'parch', 'home.dest','boat', 'body'] df = df.drop(cols, axis=1)
-
选择 “预览” 以预览更改,然后选择 “添加” 以添加转换。
清除缺失值
现在,清理缺失的值。您可以使用 “处理缺失值” 转换组来执行此操作。
许多列都有缺失的值。在其余列中,年龄和票价包含缺失值。使用自定义转换对此进行检查。
使用 Python (Pandas) 选项,使用以下命令快速查看每列中的条目数:
df.info()

要删除年龄类别中缺少值的行,请执行以下操作:
-
选择 “处理缺失”。
-
为 “变形金刚” 选择 “丢失了”。
-
为输入列选择年龄。
-
选择 “预览” 以查看新的数据框,然后选择 “添加” 将转换添加到您的流程中。
-
对票价重复同样的流程。
您可以df.info()
在 “自定义转换” 部分中使用来确认所有行现在都有 1,045 个值。
自定义熊猫:编码
尝试使用 Pandas 进行平面编码。对分类数据进行编码是为类别创建数字表示的过程。例如,如果您的类别是Dog
和Cat
,则可以将此信息编码为两个向量:[1,0]
表示Dog
和[0,1]
表示Cat
。
-
在 “自定义变换” 部分中,从下拉列表中选择 Python (Pandas)。
-
在代码框中输入以下内容。
import pandas as pd dummies = [] cols = ['pclass','sex','embarked'] for col in cols: dummies.append(pd.get_dummies(df[col])) encoded = pd.concat(dummies, axis=1) df = pd.concat((df, encoded),axis=1)
-
选择 “预览” 以预览更改。将每列的编码版本添加到数据集中。
-
选择 “添加” 以添加转换。
自定义 SQL:选择列
现在,选择要继续使用 SQL 的列。在此演示中,选择以下SELECT
语句中列出的列。因为幸存下来是你训练的目标专栏,所以把那个专栏放在第一位。
-
在 “自定义转换” 部分中,从下拉列表中选择 PySpark SQL (SQL)。
-
在代码框中输入以下内容。
SELECT survived, age, fare, 1, 2, 3, female, male, C, Q, S FROM df;
-
选择 “预览” 以预览更改。您的
SELECT
声明中列出的列是唯一剩下的列。 -
选择 “添加” 以添加转换。
导出到 Data Wrangler 笔记本
创建完数据流后,有许多导出选项。以下部分介绍如何导出到 Data Server 作业笔记本。Data Wrangler 作业用于使用数据流中定义的步骤处理您的数据。要了解有关所有导出选项的更多信息,请参阅 “”Export。
导出到 Data Wrangler Job 笔记本
当您使用 Data Wrangler 作业导出数据流时,该过程会自动创建 Jupyter 笔记本。此笔记本会自动在您的 Studio 实例中打开,并配置为运行 SageMaker 处理作业来运行您的 Data Wrangler 数据流,该数据流被称为 Data Wrangler 作业。
-
保存您的数据流。选择 “文件”,然后选择 “保存 Data Wrangler Flow”。
-
返回 “数据流” 选项卡,选择数据流 (SQL) 中的最后一步,然后选择 + 以打开导航。
-
选择 “导出”,然后选择 Amazon S3(通过 Jupyter 笔记本)。这将打开 Jupyter 笔记本。
-
为内核选择任意 Python 3(数据科学)内核。
-
内核启动时,运行笔记本中的单元格,直到启动 SageMaker 训练Job(可选)。
-
或者,如果您想创建 SageMaker训练作业来训练 XGBoost 分类器,则可以在 Kickoff Training Job(可选)中运行单元格。 SageMaker您可以在亚马逊 SageMaker 定
价中找到 SageMaker 开展培训工作的费用。 或者,您可以将笔记本中的训练 xgBoost 分类器代码块添加到笔记本中并运行它们以使用 XGBoost
开源库来训练 XgBoost 分类器。 -
取消注释并在 “清理” 下运行该单元格,然后运行它以将 SageMaker Python SDK 恢复到其原始版本。
您可以在 SageMaker 控制台的 “处理” 选项卡中监控您的 Data Wrangler 作业状态。此外,你可以使用亚马逊监控你的 Data Wrangler 作业 CloudWatch。有关更多信息,请参阅使用 CloudWatch 日志和指标监控亚马逊 SageMaker 处理任务。
如果您启动了训练作业,则可以使用 “训练” 部分的 “训练作业” 下的 SageMaker控制台监控其状态。
训练 xgBoost 分类器
你可以使用 Jupyter 笔记本电脑或亚马逊 Au SageMaker topilot 训练 XgBoost 二进制分类器。您可以使用 Autopilot 根据直接从 Data Wrangler 流程转换的数据自动训练和调整模型。有关自动驾驶的信息,请参阅在数据流中自动训练模型。
在启动 Data Wrangler 作业的同一台笔记本中,你可以提取数据,使用准备好的数据训练 XgBoost 二进制分类器,只需最少的数据准备工作。
-
首先,使用
pip
_SUCCESS文件升级必要的模块(使用时最后一个文件有问题awswrangler
)。! pip install --upgrade awscli awswrangler boto sklearn ! aws s3 rm {output_path} --recursive --exclude "*" --include "*_SUCCESS*"
-
从 Amazon S3) 读取数据。您可以使用递
awswrangler
归读取 S3 前缀中的所有 CSV 文件。然后将数据拆分为要素和标签。标签是数据框的第一列。import awswrangler as wr df = wr.s3.read_csv(path=output_path, dataset=True) X, y = df.iloc[:,:-1],df.iloc[:,-1]
-
最后,创建 DMatrices(数据的 xgBoost 原始结构),然后使用 xgBoost 二进制分类进行交叉验证。
import xgboost as xgb dmatrix = xgb.DMatrix(data=X, label=y) params = {"objective":"binary:logistic",'learning_rate': 0.1, 'max_depth': 5, 'alpha': 10} xgb.cv( dtrain=dmatrix, params=params, nfold=3, num_boost_round=50, early_stopping_rounds=10, metrics="rmse", as_pandas=True, seed=123)
-
关闭 Data Franger
当您使用 Data Wrangler 后,我们建议您关闭它在其上运行的实例,以避免产生额外费用。要了解如何关闭 Data Wrangler 应用程序和关联实例,请参阅关闭数据 Wrangler。