Sagemaker基础操作指南

2023-11-11 12:04
文章标签 基础 操作 指南 sagemaker

本文主要是介绍Sagemaker基础操作指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

Amazon SageMaker是亚马逊AWS提供的一项托管式机器学习服务,旨在简化和加速机器学习开发的整个生命周期。它为机器学习工程师和数据科学家提供了一套完整的工具和功能,用于构建、训练、调优和部署机器学习模型。本文将会通过一个简单的例子,来介绍Sagemaker的使用,并且完成一个简单的深度学习任务

创建Jupyter Notebook实例

官方例子中的代码由于调用了一些SageMaker专用的SDK,因此需要在SageMaker的JupyterNotebook实例下进行。创建的操作如下:

进入亚马逊控制台后选择Amazon SageMaker

之后选择左侧边栏的笔记本->笔记本实例

点击创建笔记本实例。

一开始新创建的笔记本实例,状态为pending,等待一段时间后,状态会变为InService。

之后选择打开Jupyter就可以进入Jupyter Notebook实例内

参考连接

亚马逊创建Jupyter notebook实例相关内容 视频链接

训练和部署

下面是亚马逊官方关于sagemaker例子的github地址

https://github.com/aws/amazon-sagemaker-examples

这里选择一个sagemake预测用户流失的例子,进行训练和部署的操作。

将git上的例子下载到本地后,对应的文件在以下目录

amazon-sagemaker-examples\introduction_to_applying_machine_learning\xgboost_customer_churn

进入JupyterNotebook实例中,点击Upload,将xgboost_customer_chun.ipynb上传到实例中。

点击这个ipynb文件,进入到实例中按步骤执行即可。

关键代码解析

例子所有的代码都在xgboost_customer_chun.ipynb文件中,例子的前半部分都是对数据进行分析和清理,就不详细讲解。直接从清理之后的部分开始

将数据分成了训练集,验证集,测试集。并且将训练集和验证集保存成train.csv,validation.csv文件

train_data, validation_data, test_data = np.split(model_data.sample(frac=1, random_state=1729),[int(0.7 * len(model_data)), int(0.9 * len(model_data))],
)
train_data.to_csv("train.csv", header=False, index=False)
validation_data.to_csv("validation.csv", header=False, index=False)

之后将这两个数据上传到s3服务器中

boto3.Session().resource("s3").Bucket(bucket).Object(os.path.join(prefix, "train/train.csv")
).upload_file("train.csv")
boto3.Session().resource("s3").Bucket(bucket).Object(os.path.join(prefix, "validation/validation.csv")
).upload_file("validation.csv")

然后创建xgboost的容器

container = sagemaker.image_uris.retrieve("xgboost", sess.boto_region_name, "1.7-1")
display(container)

然后读取之前上传的两个csv文件作为训练的输入

s3_input_train = TrainingInput(s3_data="s3://{}/{}/train".format(bucket, prefix), content_type="csv"
)
s3_input_validation = TrainingInput(s3_data="s3://{}/{}/validation/".format(bucket, prefix), content_type="csv"
)

然后设置完超参数进行训练

sess = sagemaker.Session()xgb = sagemaker.estimator.Estimator(container,role,instance_count=1,instance_type="ml.m4.xlarge",output_path="s3://{}/{}/output".format(bucket, prefix),sagemaker_session=sess,
)
xgb.set_hyperparameters(max_depth=5,eta=0.2,gamma=4,min_child_weight=6,subsample=0.8,verbosity=0,objective="binary:logistic",num_round=100,
)xgb.fit({"train": s3_input_train, "validation": s3_input_validation})

等待训练完成之后,就可以把这个预测器进行部署

xgb_predictor = xgb.deploy(initial_instance_count=1, instance_type="ml.m4.xlarge", serializer=CSVSerializer()
)

部署完成后就可以调用predict接口将一开始分出来的测试集进行预测

def predict(data, rows=500):split_array = np.array_split(data, int(data.shape[0] / float(rows) + 1))predictions = ""for array in split_array:predictions = "".join([predictions, xgb_predictor.predict(array).decode("utf-8")])return predictions.split("\n")[:-1]predictions = predict(test_data.to_numpy()[:, 1:])

最后就是对预测的结果正确性进行对比。

pd.crosstab(index=test_data.iloc[:, 0],columns=np.round(predictions),rownames=["actual"],colnames=["predictions"],)

下面是预测后的结果,绿色方框均为预测正确结果,红色方案内为预测错误的结果。正确率为94.6%

附上官方教程,教程内显示执行后的整个输出。(里面部分代码在真实环境中可能会报错,实际还是要用放在github上的代码)

https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_applying_machine_learning/xgboost_customer_churn/xgboost_customer_churn_outputs.html

创作不易,如果觉得这篇文章对你有所帮助,可以动动小手,点个赞哈,ღ( ´・ᴗ・` )比心

这篇关于Sagemaker基础操作指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/389933

相关文章

PostgreSQ数据库实现在Windows上异地自动备份指南的详细教程

《PostgreSQ数据库实现在Windows上异地自动备份指南的详细教程》这篇文章主要为大家详细介绍了如何在Windows系统上实现PostgreSQL数据库的异地自动备份,文中的示例代码讲解详细,... 目录前期准备实现步骤步骤一:创建备份脚本步骤二:配置免密登录(可选但推荐)步骤三:设置任务计划程序步

Python在二进制文件中进行数据搜索的实战指南

《Python在二进制文件中进行数据搜索的实战指南》在二进制文件中搜索特定数据是编程中常见的任务,尤其在日志分析、程序调试和二进制数据处理中尤为重要,下面我们就来看看如何使用Python实现这一功能吧... 目录简介1. 二进制文件搜索概述2. python二进制模式文件读取(rb)2.1 二进制模式与文本

SpringBoot整合 Quartz实现定时推送实战指南

《SpringBoot整合Quartz实现定时推送实战指南》文章介绍了SpringBoot中使用Quartz动态定时任务和任务持久化实现多条不确定结束时间并提前N分钟推送的方案,本文结合实例代码给大... 目录前言一、Quartz 是什么?1、核心定位:解决什么问题?2、Quartz 核心组件二、使用步骤1

MySQL游标和触发器的操作流程

《MySQL游标和触发器的操作流程》本文介绍了MySQL中的游标和触发器的使用方法,游标可以对查询结果集进行逐行处理,而触发器则可以在数据表发生更改时自动执行预定义的操作,感兴趣的朋友跟随小编一起看看... 目录游标游标的操作流程1. 定义游标2.打开游标3.利用游标检索数据4.关闭游标例题触发器触发器的基

在C#中分离饼图的某个区域的操作指南

《在C#中分离饼图的某个区域的操作指南》在处理Excel饼图时,我们可能需要将饼图的各个部分分离出来,以使它们更加醒目,Spire.XLS提供了Series.DataFormat.Percent属性,... 目录引言如何设置饼图各分片之间分离宽度的代码示例:从整个饼图中分离单个分片的代码示例:引言在处理

Python列表的创建与删除的操作指南

《Python列表的创建与删除的操作指南》列表(list)是Python中最常用、最灵活的内置数据结构之一,它支持动态扩容、混合类型、嵌套结构,几乎无处不在,但你真的会创建和删除列表吗,本文给大家介绍... 目录一、前言二、列表的创建方式1. 字面量语法(最常用)2. 使用list()构造器3. 列表推导式

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

Java利用Spire.Doc for Java实现在模板的基础上创建Word文档

《Java利用Spire.DocforJava实现在模板的基础上创建Word文档》在日常开发中,我们经常需要根据特定数据动态生成Word文档,本文将深入探讨如何利用强大的Java库Spire.Do... 目录1. Spire.Doc for Java 库介绍与安装特点与优势Maven 依赖配置2. 通过替换