Data Wrangler 入门 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Data Wrangler 入门

Amazon SageMaker Data Wrangler 是 SageMaker Studio 中的一项功能。可以使用此部分了解如何访问 并开始使用 Data Wrangler。执行以下操作:

  1. 完成 中的每个步骤Prerequisites

  2. 按照中的过程操作访问 Data Wrangler以开始使用 Data Wrangler。

Prerequisites

要使用 Data Wrangler,您必须执行以下操作:

  1. 要使用 Data Wrangler,您需要访问 m54xlarge Amazon Elastic Compute Cloud (Amazon EC2) 实例。要了解如何查看您的配额,并在必要时请求增加配额,请参阅 AWS 服务配额

  2. 配置中所述的所需权限安全和权限

要使用 Data Wrangler,您需要一个活动的 SageMaker Studio 实例。要了解如何启动新实例,请参阅注册 Amazon SageMaker Studio。当您的 Studio 实例处于 Ready (准备就绪) 状态时,请按照中的说明操作访问 Data Wrangler

访问 Data Wrangler

以下过程假定您已完成Prerequisites

要在 Studio Data Wrangler 中访问 ,请执行以下操作:

  1. 在要用于启动 Studio 的用户旁边,选择 Open Studio (打开 Studio)。

  2. 当 Studio 打开时,在 ML tasks and components (ML 任务和组件) 下选择 New data flow (新数据流) 卡上的 + 号。这将在 Studio 中创建一个新文件夹,其中包含一个 .flow 文件,其中包含您的数据流。.flow 文件自动在 Studio 中打开。

    您还可以通过依次选择 File (文件)、New (新建) 和顶部导航栏中的 Flow (流) 来创建新流。

  3. (可选)重命名新文件夹和 .flow 文件。

  4. 在 Studio 中创建新的 .flow 文件时,您可能会在Data Wrangler界面顶部看到一条消息,指示:

    连接到引擎

    建立与 引擎的连接...

    只要 User Details用户详细信息) 页面上的 KernelGateway 应用程序处于 Pending (待处理),此消息就会存在。要查看此应用程序的状态,请在 SageMakerAmazon SageMaker Studio 页面上的 控制台中,选择要用于访问 Studio 的用户的名称。在 User Details用户详细信息) 页面上,您将在 Apps (应用程序) 下看到KernelGateway 应用程序。请耐心等待,直到此应用程序状态为 Ready to start using (准备好开始使用 Data Wrangler)。在您首次启动 时,这可能需要大约 5 分钟的时间Data Wrangler。

  5. 要开始使用,请选择一个数据源并使用它导入数据集。请参阅 Import 以了解更多信息。

    当您导入数据集时,数据集将显示在您的数据流中。要了解更多信息,请参阅“创建和使用Data Wrangler流”。

  6. 导入数据集后, 自动Data Wrangler推断每个列中的数据类型。选择 Data types (数据类型) 步骤旁边的 +,然后选择 Edit data types (编辑数据类型)。

    重要

    将转换添加到数据类型步骤后,无法使用 Update types (更新类型) 批量更新列类型

  7. 使用 数据流添加转换和分析。要了解更多信息,请参阅转换数据分析和可视化

  8. 要导出完整的数据流,请选择 Export (导出),然后选择导出选项。要了解更多信息,请参阅“Export”。

  9. 最后,选择 Components and registries (组件和注册表) 图标,然后Data Wrangler从下拉列表中选择 以查看您创建的所有 .flow 文件。您可以使用此菜单查找数据流并在数据流之间移动。

启动 后Data Wrangler,您可以使用以下部分演练如何使用 创建 Data Wrangler ML 数据准备流。

更新 Data Wrangler

建议您定期更新 Data Wrangler Studio 应用程序以访问最新的功能和更新。data wangler 应用程序名称以 sagemaker-data-wrang 开头。要了解如何更新 SageMaker Studio 应用程序,请参阅更新 Studio 应用程序

演示: Data Wrangler Titanic Dataset 演练

以下部分提供了帮助您开始使用 的演练Data Wrangler。本演练假定您已按照中的步骤操作访问 Data Wrangler,并打开了新的数据流文件以用于演示。您可能希望将此 .flow 文件重命名为类似于 titanic-demo.flow 的内容。

本演练使用 Titanic 数据集。此数据集包含 1912 年 RMS Titanic 的“随身”驾驶路线中乘客的生存状态、年龄、性别和类别(充当经济状态的代理)。

在本教程中,您将:

  • Titanic 数据集上传到 Amazon Simple Storage Service (Amazon S3),然后将此数据集导入 Data Wrangler。

  • 使用 分析分析来Data Wrangler分析此数据集。

  • 使用数据Data Wrangler转换定义数据流。

  • 将您的流导出到 Jupyter Notebook,以便用于创建Data Wrangler作业。

  • 处理您的数据,并启动SageMaker训练作业以训练 XGBoost Binary 分类器。

将数据集上传到 S3 并导入

要开始使用,请下载 Titanic 数据集并将其上传到您要在其中完成此演示的 AWS 区域中的 S3 存储桶。

如果您是 的新用户Amazon S3,则可以使用在 Amazon S3 控制台中拖放来执行此操作。要了解如何上传文件和文件夹,请参阅 中的使用拖放功能上传文件和文件夹Amazon Simple Storage Service 控制台用户指南。

重要

将您的数据集上传到要用于完成此演示的同一 AWS 区域中的 S3 存储桶。

当您的数据集已成功上传到 时Amazon S3,您可以将其导入 Data Wrangler。

将 Titanic 数据集导入到 Data Wrangler

  1. 选择流文件中的 ImportData Wrangler (导入) 选项卡。

  2. Select Amazon S3.

  3. 使用 Import a dataset from S3 (从 S3 导入数据集) 表查找您向其添加 Titanic 数据集的 存储桶。选择 Titanic dataset CSV 文件以打开 Details 窗格。

  4. Details (详细信息) 下,File type (文件类型) 应为 CSV。选择 Add header to table (向表添加标头) 以指定数据集的第一行是标头。您还可以将数据集命名为更友好的名称,例如 Titanic-train。

  5. 选择 Import dataset (导入数据集)。

当您的数据集导入 时Data Wrangler,它将显示在数据流中。您可以随时通过选择 Prepare (准备) 选项卡查看您的数据流。在下一部分中,您将使用此数据流添加分析和转换步骤。

数据流

在数据流部分中,您将注意到数据流中的唯一步骤是最近导入的数据集和数据类型步骤。应用转换后,您可以返回到此选项卡以查看数据流的外观。现在,在 Prepare and Analyze (准备和分析) 选项卡下添加一些基本转换。

准备和可视化

Data Wrangler 具有内置的转换和可视化内容,可用于分析、清理和转换数据。

Prepare (准备) 选项卡中,右侧面板中列出了所有内置转换,右侧面板中还包含一个可添加自定义转换的区域。以下使用案例展示了如何使用这些转换。

数据探究

首先,使用 分析创建数据的表摘要。执行以下操作:

  1. 选择数据流中 Data type (数据类型) 步骤旁边的 +,然后选择 Add analysis (添加分析)。

  2. Analysis (分析) 区域中,从下拉列表中选择 Table summary (表摘要)。

  3. 为表摘要提供一个 Name (名称)。

  4. 选择 Preview (预览) 以预览将创建的表。

  5. 选择 Create (创建) 以将其保存到您的数据流中。它显示在 All Analysiss (所有分析) 下。

通过使用您看到的统计数据,您可以针对此数据集进行与以下内容类似的观察:

  • 平均(均值)约为 33 USD,最大值高于 500 USD。此列可能具有异常值。

  • 此数据集使用 ? 指示缺失值。很多列具有缺失值:falletboxed home.dest

  • 期限类别缺少超过 250 个值。

选择 Prepare (准备) 以返回数据流。接下来,使用从这些统计数据中获取的见解清理您的数据。

删除未使用的列

使用上一节中的分析,清理数据集以准备用于训练。要向数据流添加新转换,请选择数据流中 Data type (数据类型) 步骤旁边的 +,然后选择 Add transform (添加转换)。

首先,删除您不想用于训练的列。您可以使用 Pandas 数据分析库执行此操作,也可以使用内置转换之一。

要使用 Pandas 执行此操作,请执行以下操作:

  1. Custom Transform 部分中,从下拉列表中选择 Python (Pandas)。

  2. 在代码框中输入以下内容。

    cols = ['name', 'ticket', 'cabin', 'sibsp', 'parch', 'home.dest','boat', 'body'] df = df.drop(cols, axis=1)
  3. 选择 Preview (预览) 以预览更改,然后选择 Add (添加) 以添加转换。

要使用内置转换,请执行以下操作:

  1. 从右侧面板中选择 Manage columns (管理列)。

  2. 对于 Input column (输入列),选择 fallet (机群),然后选择 Preview (预览)。

  3. 验证是否丢弃了 fallato 列,然后选择 Add。

  4. 对以下列重复这些步骤:票证名称sibspparchhome.dest正文

清除缺失值

现在,清除缺失的值。您可以使用处理缺失值转换组执行此操作。

很多列具有缺失值。在其余列中,年龄费用包含缺失值。使用自定义转换检查此项。

使用 Python (Pandas) 选项,使用以下内容快速查看每列中的条目数:

df.info()

要删除期限类别中缺少值的行,请执行以下操作:

  1. 选择处理缺失值

  2. 选择 Drop missing for the Transformer。

  3. Dimension 选择 Drop Rows。

  4. Input 列选择 age。

  5. 选择 Preview (预览) 以查看新数据帧,然后选择 Add (添加) 以将转换添加到流。

  6. farees 重复相同的过程。

您可以在 df.info() Custom transform (自定义转换) 部分使用 ,以确认所有行现在都具有 1045 个值。

自定义 Pandas:编码

尝试使用 Pandas 进行平面编码。对分类数据进行编码是为类别创建数值表示形式的过程。例如,如果您的类别是 Dog 和 Cat,您可以将此信息编码为两个向量: [1,0] 表示 Dog, [0,1] 表示 Cat。

  1. Custom Transform 部分中,从下拉列表中选择 Python (Pandas)。

  2. 在代码框中输入以下内容。

    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)
  3. 选择 Preview (预览) 以预览更改。每个列的编码版本将添加到数据集中。

  4. 选择 Add (添加) 以添加转换。

自定义 SQL:SELECT 列

现在,选择要继续使用 SQL 的列。对于此演示,请选择以下SELECT语句中列出的列。由于 生存是您的训练目标列,因此,请将该列放在最前面。

  1. Custom Transform (自定义转换) 部分中,从下拉列表中选择 SQL (PySpark SQL)。

  2. 在代码框中输入以下内容。

    SELECT survived, age, fare, 1, 2, 3, female, male, C, Q, S FROM df;
  3. 选择 Preview (预览) 以预览更改。上面的SELECT语句中列出的列是剩余的列。

  4. 选择 Add (添加) 以添加转换。

Export

创建完数据流后,您有许多导出选项。以下部分说明如何导出到Data Wrangler作业笔记本。Data Wrangler 作业用于使用数据流中定义的步骤处理您的数据。要了解有关所有导出选项的更多信息,请参阅Export

导出到Data Wrangler作业笔记本

当您使用Data Wrangler作业导出数据流时,将自动创建一个 Jupyter 笔记本。此笔记本自动在您的 Studio 实例中打开,并配置为运行SageMaker处理作业以执行Data Wrangler数据流(称为Data Wrangler作业)。

  1. 保存您的数据流。选择 File,然后选择 Save Data Wrangler Flow。

  2. 选择 Export 选项卡。

  3. 选择数据流中的最后一个步骤。

  4. 选择 Data Wrangler Job (作业)。这将打开一个 Jupyter 笔记本。

  5. 内核选择任何 Python 3 (数据科学) 内核。

  6. 当内核启动时,运行笔记本图书中的单元格,直到启动 SageMaker 训练作业(可选)。

  7. (可选)如果要创建训练作业来训练 XGboost 分类器,则可以在 Kick off SageMaker Training Job (可选)SageMaker 中运行单元格。您可以在 SageMakerAmazon SageMaker 定价中找到运行 训练作业的成本。

    或者,您可以将 中找到的代码块添加到笔记本训练 XGBoost 分类器中,并运行它们以使用 XGBoost 开源库训练 XGBoost 分类器。

  8. 取消注释并运行 Cleanup (清理) 下的单元格,然后运行该单元格以将 SageMaker Python 开发工具包恢复到其原始版本。

您可以在 Data Wrangler 控制台的 SageMakerProcessing (处理) 选项卡中监控作业状态。此外,您还可以使用 监控您的Data Wrangler作业Amazon CloudWatch。有关其他信息,请参阅使用 CloudWatch Logs 和指标https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html#processing-job-cloudwatch监控 Amazon SageMaker 处理作业。

如果您启动了训练作业,则可以使用 SageMaker 控制台在 Training jobs (训练作业) 部分的 Training jobs (训练作业) 下监控其状态。

训练 XGBoost 分类器

在启动Data Wrangler作业的同一笔记本中,您可以使用准备的数据提取数据并训练 XGBoost Binary 分类器,只需最少的数据准备。

  1. 首先,使用 升级必要的模块pip并删除 _SUCCESS 文件(此文件在使用 时存在问题awswrangler)。

    ! pip install --upgrade awscli awswrangler boto sklearn ! aws s3 rm {output_path} --recursive --exclude "*" --include "*_SUCCESS*"
  2. 从 中读取数据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 Wrangler

使用完 后Data Wrangler,我们建议您关闭其上运行的实例,以避免产生额外费用。要了解如何关闭Data Wrangler应用程序和关联的 实例,请参阅关闭 Data Wrangler