Azure机器学习教程:使用SDK训练你的第一个模型
前言
在Azure机器学习服务中训练模型是数据科学工作流的核心环节。本教程将带你使用Azure机器学习Python SDK完成从数据准备到模型训练的全过程,并展示如何利用Azure机器学习的工作区(Workspace)和实验(Experiment)功能来有效管理机器学习实验。
准备工作
在开始本教程前,你需要确保已完成以下准备工作:
- 已创建Azure机器学习工作区
- 已设置好开发环境(如本地Python环境或云笔记本环境)
- 已安装azureml-core等必要的Python包
连接工作区并创建实验
首先我们需要连接到Azure机器学习工作区:
from azureml.core import Workspace
ws = Workspace.from_config()
from_config()
方法会从当前目录的config.json文件中读取工作区配置信息。如果是在云笔记本环境中运行,这个文件通常会自动放在根目录下。
接下来创建一个实验:
from azureml.core import Experiment
experiment = Experiment(workspace=ws, name="diabetes-experiment")
实验是Azure机器学习中的一个重要概念,它代表一组相关的模型运行(称为"runs")。通过实验,我们可以组织和跟踪模型训练过程。
数据准备
本教程使用糖尿病数据集,该数据集包含年龄、性别、BMI等特征,目标是预测糖尿病进展程度:
from azureml.opendatasets import Diabetes
from sklearn.model_selection import train_test_split
x_df = Diabetes.get_tabular_dataset().to_pandas_dataframe().dropna()
y_df = x_df.pop("Y")
X_train, X_test, y_train, y_test = train_test_split(x_df, y_df, test_size=0.2, random_state=66)
我们使用Azure开放数据集(Azure Open Datasets)获取数据,并将其拆分为训练集和测试集。
模型训练
我们将训练一个Ridge回归模型,并测试不同的alpha超参数值:
from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error
import joblib
import math
alphas = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]
for alpha in alphas:
run = experiment.start_logging()
run.log("alpha_value", alpha)
model = Ridge(alpha=alpha)
model.fit(X=X_train, y=y_train)
y_pred = model.predict(X=X_test)
rmse = math.sqrt(mean_squared_error(y_true=y_test, y_pred=y_pred))
run.log("rmse", rmse)
model_name = "model_alpha_" + str(alpha) + ".pkl"
filename = "outputs/" + model_name
joblib.dump(value=model, filename=filename)
run.upload_file(name=model_name, path_or_stream=filename)
run.complete()
这段代码完成了以下重要操作:
- 为每个alpha值创建一个独立的运行(run)
- 记录alpha值和模型评估指标(RMSE)
- 保存模型文件并上传到运行记录中
- 完成运行
查看实验结果
训练完成后,我们可以查看实验对象获取Azure机器学习工作室的链接:
experiment
在Azure机器学习工作室中,你可以:
- 查看所有运行的汇总信息
- 比较不同超参数配置的性能
- 可视化训练指标
- 下载训练好的模型文件
获取最佳模型
除了通过UI界面,我们也可以通过代码获取表现最好的模型:
minimum_rmse_runid = None
minimum_rmse = None
for run in experiment.get_runs():
run_metrics = run.get_metrics()
run_details = run.get_details()
run_rmse = run_metrics["rmse"]
run_id = run_details["runId"]
if minimum_rmse is None:
minimum_rmse = run_rmse
minimum_rmse_runid = run_id
else:
if run_rmse < minimum_rmse:
minimum_rmse = run_rmse
minimum_rmse_runid = run_id
print("Best run_id: " + minimum_rmse_runid)
print("Best run_id rmse: " + str(minimum_rmse))
然后下载最佳模型:
from azureml.core import Run
best_run = Run(experiment=experiment, run_id=minimum_rmse_runid)
best_run.download_file(name="model_alpha_0.1.pkl")
资源清理
完成实验后,记得清理不再使用的资源以避免产生额外费用:
- 停止不再使用的计算资源
- 删除不需要的实验和模型
- 如果确定不再使用,可以删除整个资源组
总结
通过本教程,你学会了:
- 如何连接Azure机器学习工作区并创建实验
- 使用Azure开放数据集加载数据
- 训练模型并记录实验指标
- 在Azure机器学习工作室中查看和分析实验结果
- 以编程方式获取最佳模型
这些基础技能为后续更复杂的机器学习工作流打下了坚实基础。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考