将数据上传到 S3
在上个 notebook 中,你应该使用给定剽窃/非剽窃文本数据语料库的特征和类别标签创建了两个文件:training.csv
和 test.csv
文件。
以下单元格将加载一些 AWS SageMaker 库并创建一个默认存储桶。创建此存储桶后,你可以将本地存储的数据上传到 S3。
将训练和测试 .csv
特征文件保存到本地。你可以在 SageMaker 中运行第二个 notebook“2_Plagiarism_Feature_Engineering”,或者使用 Jupyter Lab 中的上传图标手动将文件上传到此 notebook。然后,你可以使用 sagemaker_session.upload_data
将本地文件上传到 S3,并直接指向训练数据的存储位置。
In [1]:
import pandas as pd import boto3 import sagemaker
In [2]:
""" DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE """ # session and role sagemaker_session = sagemaker.Session() role = sagemaker.get_execution_role() # create an S3 bucket bucket = sagemaker_session.default_bucket()
练习:将训练数据上传到 S3
指定在其中保存了 train.csv
文件的 data_dir
。指定一个描述性 prefix
,指出数据将上传到默认 S3 存储桶的什么位置。最后,通过调用 sagemaker_session.upload_data
并传入必要的参数,创建一个指向训练数据的指针。建议参考 Session 文档或之前的 SageMaker 代码示例。
你需要上传整个目录。之后,训练脚本将仅访问 train.csv
文件。
In [3]:
# should be the name of directory you created to save your features data data_dir = "plagiarism_data" # set prefix, a descriptive name for a directory prefix = "sagemaker/plagiarism-data" # upload all data to S3 input_data = sagemaker_session.upload_data(path=data_dir,bucket=bucket,key_prefix=prefix) print("input_data=",input_data)
input_data= s3://sagemaker-us-east-2-946824679433/sagemaker/plagiarism-data
测试单元格
测试数据是否已成功上传。以下单元格将输出 S3 存储桶中的内容,如果为空,将抛出错误。你应该看到 data_dir
的内容,或许还有一些检查点。如果你看到其中列出了任何其他文件,那么你也许有一些旧的模型文件,你可以通过 S3 控制台删除这些旧文件(不过多余的文件应该不会影响在此 notebook 中开发的模型的性能)。
In [4]:
""" DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE """ # confirm that data is in S3 bucket empty_check = [] for obj in boto3.resource('s3').Bucket(bucket).objects.all(): empty_check.append(obj.key) print(obj.key) assert len(empty_check) !=0, 'S3 bucket is empty.' print('Test passed!')
sagemaker/plagiarism-data/test.csv sagemaker/plagiarism-data/train.csv Test passed!