第 3 步:下载、浏览和转换数据集 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

第 3 步:下载、浏览和转换数据集

在此步骤中,您将成人普查数据集添加到您的笔记本实例中使用SHAP(沙普利添加剂解释)库,查看数据集,转换数据集并将数据集上传到 Amazon S3。

要运行以下示例,请将示例代码粘贴到笔记本实例中的一个单元格。

使用 SHAP 加载成人人普查数据集

使用 SHAP 库导入成人普查数据集,如下所示:

import shap X, y = shap.datasets.adult() X_display, y_display = shap.datasets.adult(display=True) feature_names = list(X.columns) feature_names
注意

如果当前 Jupyter 内核没有 SHAP 库,请通过运行以下conda命令:

%conda install -c conda-forge shap

如果您使用的是 JupyterLab,则必须在安装和更新完成后手动刷新内核。运行以下 IPython 脚本关闭内核(内核将自动重新启动):

import IPython IPython.Application.instance().kernel.do_shutdown(True)

这些区域有:feature_names列表对象应返回以下功能列表:

['Age', 'Workclass', 'Education-Num', 'Marital Status', 'Occupation', 'Relationship', 'Race', 'Sex', 'Capital Gain', 'Capital Loss', 'Hours per week', 'Country']
提示

如果您从未贴标的数据开始,您可以使用 Amazon SageMaker Ground Truth 在几分钟内创建数据贴标工作流程。要了解更多信息,请参阅标签数据.

概览数据集

运行以下脚本以显示数字要素的数据集和直方图的统计概述。

display(X.describe()) hist = X.hist(bins=30, sharey=True, figsize=(20, 10))

                成人普查数据集概述。
提示

如果您希望使用需要清理和转换的数据集,可以使用 Amazon SageMaker Data Wrangler 简化和简化数据预处理和要素工程。要了解更多信息,请参阅使用 Amazon SageMaker er 数据牧羊人准备 ML 数据.

将数据集拆分为训练数据集、验证数据集和测试数据集

使用 Sklearn 可以将数据集拆分为一个训练集和一个测试集。使用固定随机种子对数据集进行随机排序:训练集合占数据集的 80%,测试集合占 20%。

from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) X_train_display = X_display.loc[X_train.index]

拆分培训集以分离验证集。75% 的培训集将成为最终训练集,其余为验证集。

X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.25, random_state=1) X_train_display = X_display.loc[X_train.index] X_val_display = X_display.loc[X_val.index]

使用熊猫包,通过将数字要素与真实标注串联起来显式对齐每个数据集。

import pandas as pd train = pd.concat([pd.Series(y_train, index=X_train.index, name='Income>50K', dtype=int), X_train], axis=1) validation = pd.concat([pd.Series(y_val, index=X_val.index, name='Income>50K', dtype=int), X_val], axis=1) test = pd.concat([pd.Series(y_test, index=X_test.index, name='Income>50K', dtype=int), X_test], axis=1)

检查数据集是否按预期进行拆分和结构化:

train

                训练数据集。
validation

                验证数据集。
test

                测试数据集。

将列车和验证数据集转换为 CSV 文件

trainvalidation数据框对象转换为 CSV 文件,以匹配 XGBoost 算法的输入文件格式。

# Use 'csv' format to store the data # The first column is expected to be the output column train.to_csv('train.csv', index=False, header=False) validation.to_csv('validation.csv', index=False, header=False)

将数据集上传到 Amazon S3

使用 SageMaker 和 Bot3,将培训和验证数据集上传到默认的 Amazon S3 存储桶。S3 存储桶中的数据集将被 Amazon EC2 上计算优化的 SageMaker 实例用于培训。

以下代码为当前 SageMaker 会话设置默认 S3 存储桶 URI,创建一个新的demo-sagemaker-xgboost-adult-income-prediction文件夹,然后将训练和验证数据集上传到data子文件夹。

import sagemaker, boto3, os bucket = sagemaker.Session().default_bucket() prefix = "demo-sagemaker-xgboost-adult-income-prediction" boto3.Session().resource('s3').Bucket(bucket).Object( os.path.join(prefix, 'data/train.csv')).upload_file('train.csv') boto3.Session().resource('s3').Bucket(bucket).Object( os.path.join(prefix, 'data/validation.csv')).upload_file('validation.csv')

运行以下命令Amazon CLI检查 CSV 文件是否已成功上传到 S3 存储桶。

! aws s3 ls {bucket}/{prefix}/data --recursive

此查询应返回以下输出:


                用于检查 S3 存储桶中的数据集的输出。