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

相关文章

PyCharm接入DeepSeek实现AI编程的操作流程

《PyCharm接入DeepSeek实现AI编程的操作流程》DeepSeek是一家专注于人工智能技术研发的公司,致力于开发高性能、低成本的AI模型,接下来,我们把DeepSeek接入到PyCharm中... 目录引言效果演示创建API key在PyCharm中下载Continue插件配置Continue引言

使用Python实现操作mongodb详解

《使用Python实现操作mongodb详解》这篇文章主要为大家详细介绍了使用Python实现操作mongodb的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、示例二、常用指令三、遇到的问题一、示例from pymongo import MongoClientf

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

C# 读写ini文件操作实现

《C#读写ini文件操作实现》本文主要介绍了C#读写ini文件操作实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、INI文件结构二、读取INI文件中的数据在C#应用程序中,常将INI文件作为配置文件,用于存储应用程序的

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

java Stream操作转换方法

《javaStream操作转换方法》文章总结了Java8中流(Stream)API的多种常用方法,包括创建流、过滤、遍历、分组、排序、去重、查找、匹配、转换、归约、打印日志、最大最小值、统计、连接、... 目录流创建1、list 转 map2、filter()过滤3、foreach遍历4、groupingB