【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】

这篇具有很好参考价值的文章主要介绍了【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用 Amazon SageMaker 构建机器学习应用

全程部署视频看这里,原视频30分钟左右为了观看体验剪掉了等待时间:

小白使用Amazon SageMaker 构建机器学习应用

一、创建Sagemaker Notebook实例

Amazon SageMaker: https://aws.amazon.com/cn/sagemaker/
【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】
输入名称、选择实例类型、配置磁盘大小,具体如下图
【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】
创建新角色,选择任意S3存储桶,点击创建角色
【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】
【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】
配置VPC网络,选择VPC、子网和安全组,并点击创建笔记本实例
【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】
等待5-6分钟,状态变为inSerice,点击打开jupyter
【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】
新建文件,如下图
【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】

二、下载数据集

输入如下代码,下载数据集并解压:

!wget -N https://archive.ics.uci.edu/ml/machine-learning-databases/00222/bank-additional.zip
!unzip -o bank-additional.zip

粘贴代码后点击运行
【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】

通过pandas展示数据集

使用 bank-additional-full.csv 数据集文件,将其通过 pandas 读入并展示:

import numpy as np  # For matrix operations and numerical processing
import pandas as pd  # For munging tabular data
import os

data = pd.read_csv("./bank-additional/bank-additional-full.csv", sep=";")
pd.set_option("display.max_columns", 500)  # Make sure we can see all of the columns
pd.set_option("display.max_rows", 50)  # Keep the output on one page
data

【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】
特征解释如下:
【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】

三、数据预处理

数据清洗将分类类型数据通过独热编码转换为数字。

data["no_previous_contact"] = np.where(
    data["pdays"] == 999, 1, 0
)  # Indicator variable to capture when pdays takes a value of 999
data["not_working"] = np.where(
    np.in1d(data["job"], ["student", "retired", "unemployed"]), 1, 0
)  # Indicator for individuals not actively employed
model_data = pd.get_dummies(data)  # Convert categorical variables to sets of indicators
model_data

【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】
删除数据中相关的特征和 duration 特征

model_data = model_data.drop(
["duration", "emp.var.rate", "cons.price.idx", "cons.conf.idx", "euribor3m", "nr.employed"], axis=1)
model_data = model_data.drop(["y_no"], axis=1)
model_data

【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】
将数据集拆分为训练(90%)和测试(10%)数据集,并将数据集转换为算法期望的正确格式。 在训练期间使用训练数据集,这些测试数据集将在模型训练完成后用于评估模型性能。
【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】

四、使用XGBoost训练模型

安装XGBoost

!pip install xgboost

使用python XGBoost API

启动模型训练,并在完成后保存模型。然后将前面预留出的测试数据集送入模型中进行推理,我们将推理结果大于阈值(0.5)的认为是1,否则为0,然后与测试集中的标签进行对比来评估模型效果。

import numpy as np
import pandas as pd
import xgboost as xgb
from sklearn.model_selection import train_test_split

# 用sklearn.cross_validation进行训练数据集划分,这里训练集和交叉验证集比例为8:2,可以自己根据需要设置
X, val_X, y, val_y = train_test_split(
    train_x,
    train_y,
    test_size=0.2,
    random_state=2022,
    stratify=train_y
)

# xgb矩阵赋值
xgb_val = xgb.DMatrix(val_X, label=val_y)
xgb_train = xgb.DMatrix(X, label=y)
xgb_test = xgb.DMatrix(test_x)

# xgboost模型 #####################
params = {
    'booster': 'gbtree',
    'objective': 'binary:logistic',
    'eval_metric': 'auc', #logloss
    'gamma': 0.1,  # 用于控制是否后剪枝的参数,越大越保守,一般0.1、0.2
    'max_depth': 8,  # 构建树的深度,越大越容易过拟合
    'alpha': 0,   # L1正则化系数
    'lambda': 10,  # 控制模型复杂度的权重值的L2正则化项参数,参数越大,模型越不容易过拟合
    'subsample': 0.7,  # 随机采样训练样本
    'colsample_bytree': 0.5,  # 生成树时进行的列采样
    'min_child_weight': 3,
    # 这个参数默认是 1,是每个叶子里面 h 的和至少是多少,对正负样本不均衡时的 0-1 分类而言
    # ,假设 h 在 0.01 附近,min_child_weight 为 1 意味着叶子节点中最少需要包含 100 个样本。
    # 这个参数非常影响结果,控制叶子节点中二阶导的和的最小值,该参数值越小,越容易 overfitting。
    'silent': 0,  # 设置成1则没有运行信息输出,最好是设置为0.
    'eta': 0.03,  # 如同学习率
    'seed': 1000,
    'nthread': -1,  # cpu 线程数
    'missing': 1,
    'scale_pos_weight': (np.sum(y==0)/np.sum(y==1))  # 用来处理正负样本不均衡的问题,通常取:sum(negative cases) / sum(positive cases)
}

plst = list(params.items())
num_rounds = 500  # 迭代次数
watchlist = [(xgb_train, 'train'), (xgb_val, 'val')]

# 训练模型并保存
# early_stopping_rounds 当设置的迭代次数较大时,early_stopping_rounds 可在一定的迭代次数内准确率没有提升就停止训练
model = xgb.train(plst, xgb_train, num_rounds, watchlist, early_stopping_rounds=200)
model.save_model('./xgb.model')  # 用于存储训练出的模型

preds = model.predict(xgb_test)

# 导出结果
threshold = 0.5
ypred = np.where(preds > 0.5, 1, 0)

from sklearn import metrics

print ('AUC: %.4f' % metrics.roc_auc_score(test_y,ypred))
print ('ACC: %.4f' % metrics.accuracy_score(test_y,ypred))
print ('Recall: %.4f' % metrics.recall_score(test_y,ypred))
print ('F1-score: %.4f' %metrics.f1_score(test_y,ypred))
print ('Precesion: %.4f' %metrics.precision_score(test_y,ypred))
print(metrics.confusion_matrix(test_y,ypred))

输出模型中不同特征的重要性,这通常帮忙我们更好的理解模型行为。

from xgboost import plot_importance
from matplotlib import pyplot as plt

plt.rcParams['figure.figsize'] = (10.0, 8.0) #

# 显示重要特征
plot_importance(model)
plt.show()

【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】

五、使用 SageMaker Training API 开展模型训练

初始化

import sagemaker
import boto3

import numpy as np  # For matrix operations and numerical processing
import pandas as pd  # For munging tabular data
from time import gmtime, strftime
import os

region = boto3.Session().region_name
smclient = boto3.Session().client("sagemaker")

role = sagemaker.get_execution_role()

bucket = sagemaker.Session().default_bucket()
prefix = "sagemaker/DEMO-hpo-xgboost-dm"

数据处理

data = pd.read_csv("./bank-additional/bank-additional-full.csv", sep=";")
pd.set_option("display.max_columns", 500)  # Make sure we can see all of the columns
data["no_previous_contact"] = np.where(
    data["pdays"] == 999, 1, 0
)  # Indicator variable to capture when pdays takes a value of 999
data["not_working"] = np.where(
    np.in1d(data["job"], ["student", "retired", "unemployed"]), 1, 0
)  # Indicator for individuals not actively employed
model_data = pd.get_dummies(data)  # Convert categorical variables to sets of indicators
model_data = model_data.drop(
    ["duration", "emp.var.rate", "cons.price.idx", "cons.conf.idx", "euribor3m", "nr.employed"],
    axis=1,

)

将数据集拆分为训练(70%)、验证(20%)和测试(10%)数据集,并将数据集转换为 SageMaker 内置 XGBoost 算法期望的正确格式。 我们将在训练期间使用训练和验证数据集。测试数据集将在部署到端点后用于评估模型性能。

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))],
)

pd.concat([train_data["y_yes"], train_data.drop(["y_no", "y_yes"], axis=1)], axis=1).to_csv(
    "train.csv", index=False, header=False
)
pd.concat(
    [validation_data["y_yes"], validation_data.drop(["y_no", "y_yes"], axis=1)], axis=1
).to_csv("validation.csv", index=False, header=False)
pd.concat([test_data["y_yes"], test_data.drop(["y_no", "y_yes"], axis=1)], axis=1).to_csv(
    "test.csv", index=False, header=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")


from sagemaker.inputs import TrainingInput

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"
)

生成XGBoost 模型训练报告,这里会比较慢

from sagemaker.debugger import Rule, rule_configs

rules=[
    Rule.sagemaker(rule_configs.create_xgboost_report())
]

sess = sagemaker.Session()

container = sagemaker.image_uris.retrieve("xgboost", boto3.Session().region_name, "1.2-1")

xgb = sagemaker.estimator.Estimator(
    container,
    role,
    instance_count=1,
    instance_type="ml.m4.xlarge",
    base_job_name="bank-dm-xgboost-report",
    output_path="s3://{}/{}/output".format(bucket, prefix),
    sagemaker_session=sess,
    rules=rules
)

xgb.set_hyperparameters(
    max_depth=5,
    eta=0.2,
    gamma=4,
    min_child_weight=6,
    subsample=0.8,
    objective="binary:logistic",
    num_round=500,
)

xgb.fit({"train": s3_input_train, "validation": s3_input_validation})

输出结果如下图
【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】

六、训练任务管理

找到SageMaker 控制台-训练-训练任务
【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】

训练报告S3存储位置
【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】

七、AutoGluon 训练模型

AutoGluon安装

# Install AutoGluon
!pip install -U setuptools wheel
!pip install -U "mxnet<2.0.0"
!pip install autogluon

使用 AutoGluon Tabular 训练模型

from autogluon.tabular import TabularDataset, TabularPredictor
ag_data = pd.read_csv("./bank-additional/bank-additional-full.csv", sep=";")
label = 'y'
print("Summary of y variable: \n", ag_data[label].describe())

ag_train_data, ag_test_data = np.split(
    ag_data.sample(frac=1, random_state=1729),
    [int(0.9 * len(model_data)),],
)

使用 AutoGluon,我们无需做数据处理(缺失值处理,独热编码等),AutoGloun 会自动帮我们做这些工作。

ag_test_data_X = ag_test_data.iloc[:,:-1]
ag_test_data_y =ag_test_data.iloc[:,20]

save_path = 'agModels-predictClass'  # specifies folder to store trained models

learner_kwargs = {'ignored_columns':[["duration", "emp.var.rate", "cons.price.idx", "cons.conf.idx", "euribor3m", "nr.employed"]]}

predictor = TabularPredictor(label=label, path=save_path, 
                             eval_metric='recall', learner_kwargs=learner_kwargs
                            ).fit(ag_train_data)
predictor = TabularPredictor.load(save_path)  # unnecessary, just demonstrates how to load previously-trained predictor from file

ag_y_pred = predictor.predict(ag_test_data_X)
ag_y_pred_proa = predictor.predict_proba(ag_test_data_X)

print("Predictions:  \n", ag_y_pred)
perf = predictor.evaluate_predictions(y_true=ag_test_data_y, y_pred=ag_y_pred, auxiliary_metrics=True)
# perf = predictor.evaluate_predictions(y_true=ag_test_data_y, y_pred=ag_y_pred_proa, auxiliary_metrics=True) #when eval_metric='auc' in TabularPredictor()

实验结束,记得停止实例,删除所以相关内容如角色、策略、日志组等等

八、总结

整个实验参考亚马逊官方手册部署完成,过程比较简单。但是访问速度很慢。有时候执行一半会卡住,需要重新执行,网络慢的问题希望亚马逊可以改进一下,有点影响使用体验。Sagemaker很方便, Jupyter Notebook、Notebook 实例提供了好几种开发环境PyTorch、Numpy、Pandas 等,减少了安装的时间成本,我一个没有学过机器学习的小白都可以快速上手搭建。降低了机器学习的门槛。这次实验学到很多,部署完毕只是第一步,具体的还需要多看几遍官方部署手册来消化。

九、参考资料

参考文章:亚马逊云科技【云上探索实验室】使用 Amazon SageMaker 构建机器学习应用、构建细粒度情感分析应用、基于Stable Diffusion模型,快速搭建你的第一个AIGC应用
部署文章:https://dev.amazoncloud.cn/column/article/63ff329f4891d26f36585a9c文章来源地址https://www.toymoban.com/news/detail-417412.html

到了这里,关于【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Amazon SageMaker简直就是机器学习平台的天花板

    Amazon SageMaker简直就是机器学习平台的天花板

    最近参与了亚马逊云科技【云上探索实验】活动,通过Amazon SageMaker基于Stable Diffusion模型,非常简单快速搭建的第一个AIGC,一开始以为非常复杂,不懂动手操作,但实际上操作非常简单,没有想象中的恐怖,整体体验非常愉快,我先对Amazon SageMaker简单介绍,然后对基于Stabl

    2023年04月09日
    浏览(10)
  • 使用Amazon SageMaker构建高质量AI作画模型Stable Diffusion

    使用Amazon SageMaker构建高质量AI作画模型Stable Diffusion

    近来,随着新一代 AI 大型聊天机器人 ChatGPT 火遍科技圈,人工智能生成内容( Artificial Intelligence Generated Content , AIGC )这一领域开始受到学术界、工业界甚至普通用户的广泛关注。 AIGC 凭借其独特的“创造力”与人类无法企及的创作生成速度掀起了一股人工智能狂潮。但是,利

    2023年04月14日
    浏览(11)
  • 20分钟,使用Amazon SageMaker快速搭建属于自己的AIGC应用

    20分钟,使用Amazon SageMaker快速搭建属于自己的AIGC应用

    真火! 作为最近一段时间人工智能领域内的顶流之一,AIGC(AI-Generated Content)早已火爆出圈,频登各大互联网平台热搜。 cite: 微软亚洲研究院官方微博 这段时间以来,基于深度学习的内容生成在图像、视频、语音、音乐、文本等生成领域都取得了令人瞩目的成果,也越来越

    2023年04月15日
    浏览(39)
  • 使用 Amazon SageMaker 和 Amazon CodeWhisperer,解锁数据见解

    使用 Amazon SageMaker 和 Amazon CodeWhisperer,解锁数据见解

    : [Amazon Web Services re:Invent 2023, Amazon Kendra, Generative Ai, Amazon Sagemaker, Amazon Kendra, Amazon Bedrock, Vector Databases] 本文字数: 1700, 阅读完需: 8 分钟 如视频不能正常播放,请前往bilibili观看本视频。 https://www.bilibili.com/video/BV19j41157Ux 由于数据准备、清理、探索和可视化效率低下,从

    2024年02月04日
    浏览(11)
  • 9 种方法使用 Amazon CodeWhisperer 快速构建应用

    文章作者:Kris Schultz 3D Specialist Solutions Architect, Amazon Web Services 文章译者:郑予彬 亚马逊云科技资深开发者布道师 代码校验:阙铭飞 亚马逊云科技大中华区解决方案研发中心 解决方案架构师 Amazon CodeWhisperer 是一款很赞的生成式人工智能编程工具。自从在工作中使用了 Cod

    2024年02月12日
    浏览(8)
  • 使用 Amazon Redshift Serverless 和 Toucan 构建数据故事应用程序

    使用 Amazon Redshift Serverless 和 Toucan 构建数据故事应用程序

    这是由 Toucan 的解决方案工程师 Django Bouchez 与亚马逊云科技共同撰写的特约文章。 带有控制面板、报告和分析的商业智能(BI,Business Intelligence)仍是最受欢迎的数据和分析使用场景之一。它为业务分析师和经理提供企业的过去状态和当前状态的可视化,帮助领导者制定将影

    2024年02月12日
    浏览(12)
  • Amazon SageMaker测评

    Amazon SageMaker测评

    (声明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在 亚马逊云科技开发者社区、知乎、自媒体平台、第三方开发者媒体等亚马逊云科技官方渠道) 在 2023亚马逊云科技 re:Invent 上,发布了 Amazon SageMaker 的五项新功能,旨在加速构建、训练和部署大型

    2024年02月02日
    浏览(10)
  • ❤️ ❤️ ❤️ 爆:使用ChatGPT+Streamlit快速构建机器学习数据集划分应用程序!!!

    ❤️ ❤️ ❤️ 爆:使用ChatGPT+Streamlit快速构建机器学习数据集划分应用程序!!!

    ChatGPT 对于 Python 程序员有用吗?特别是我们这些使用 Python 进行数据处理、数据清洗和构建机器学习模型的人?我们试试就知道了。 来自 OpenAI 的 ChatGPT 是什么?假设你已经知道了。网上铺天盖地的宣传呐喊,我想不再需要介绍了。加入您碰巧不知道 ChatGPT 是什么,赶快去查

    2023年04月22日
    浏览(34)
  • Amazon SageMaker测评分享,效果超出预期

    Amazon SageMaker测评分享,效果超出预期

    随着科技的进步和社会的发展,人工智能得到了愈加广泛的重视,特别是最近大火的Chatgpt,充分展现了研发通用人工智能助手广阔的研究和应用前景。让越来越多的组织和企业跟风加入到人工智能领域的研究中, 但机器学习的实施是一项极其复杂的工作,不仅需要专业技能

    2023年04月09日
    浏览(12)
  • Amazon SageMaker:探索AI绘画云端部署新方案

    Amazon SageMaker:探索AI绘画云端部署新方案

    在过去,人们只希望基于已有的给定数据做一些预测和拟合,因此判别式模型得到发展并且很好地解决了大部分任务;而未来,人们将目标转向用生成式模型生成全新数据,进行迁移学习等,也就是常说的 人工智能生成内容(AI Generated Content, AIGC) AI绘画 就是AIGC技术中的一种,

    2024年02月08日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包