Azure机器学习 - 在 Azure 机器学习中上传、访问和浏览数据

目录

  • 一、环境准备
  • 二、设置内核
  • 三、下载使用的数据
  • 四、创建工作区的句柄
  • 五、将数据上传到云存储空间
  • 六、访问笔记本中的数据
  • 七、创建新版本的数据资产
  • 八、清理资源

机器学习项目的开始阶段通常涉及到探索性数据分析 (EDA)、数据预处理(清理、特征工程)以及生成机器学习模型原型来验证假设,本教程介绍如何执行下列操作:将数据上传到云存储空间,创建 Azure 机器学习数据资产,访问笔记本中的数据以进行交互式开发, 创建新版本的数据资产。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

file

一、环境准备

  1. 若要使用 Azure 机器学习,你首先需要一个工作区。 如果没有工作区,请完成创建开始使用所需的资源以创建工作区并详细了解如何使用它。

  2. 登录到工作室,选择工作区(如果尚未打开)。

  3. 在工作区中打开或创建一个笔记本:

    • 如果要将代码复制/粘贴到单元格中,请创建新的笔记本。
    • 或者从工作室的“示例”部分打开 tutorials/get-started-notebooks/explore-data.ipynb。 然后选择“克隆”,将笔记本添加到你的“文件”。

二、设置内核

  1. 在打开的笔记本上方的顶部栏中,创建一个计算实例(如果还没有计算实例)。

file

  1. 如果计算实例已停止,请选择“启动计算”,并等待它运行。

file

  1. 确保右上角的内核为 Python 3.10 - SDK v2。 如果不是,请使用下拉列表选择此内核。

file

  1. 如果看到一个横幅,提示你需要进行身份验证,请选择“身份验证”。

三、下载使用的数据

本文使用此 CSV 格式的信用卡客户数据示例作为示例。 我们可以看到 Azure 机器学习资源中的步骤继续执行。 在该资源中,我们将直接在此笔记本所在的文件夹下创建一个本地文件夹,并使用建议的名称“data”。

  1. 选择三点下方的“打开终端”,如此图所示:

file

  1. 终端窗口将在新选项卡中打开。

  2. 请确保cd此笔记本所在的同一文件夹。 例如,如果笔记本位于名为 get-started-notebooks 的文件夹中:

    cd get-started-notebooks    #  modify this to the path where your notebook is located
  1. 在终端窗口中输入以下命令,将数据复制到计算实例:
    mkdir datacd data                     # the sub-folder where you'll store the datawget https://azuremlexamples.blob.core.windows.net/datasets/credit_card/default_of_credit_card_clients.csv
  1. 现在可以关闭终端窗口。

四、创建工作区的句柄

在深入了解代码之前,需要一种方法来引用工作区。 你将为工作区句柄创建 ml_client。 然后,你将使用 ml_client 来管理资源和作业。

在下一个单元格中,输入你的订阅 ID、资源组名称和工作区名称。 若要查找这些值:

  1. 在右上方的 Azure 机器学习工作室工具栏中,选择你的工作区名称。
  2. 将工作区、资源组和订阅 ID 的值复制到代码中。
  3. 需要复制一个值,关闭区域并粘贴,然后返回下一个值。
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes# authenticate
credential = DefaultAzureCredential()# Get a handle to the workspace
ml_client = MLClient(credential=credential,subscription_id="<SUBSCRIPTION_ID>",resource_group_name="<RESOURCE_GROUP>",workspace_name="<AML_WORKSPACE_NAME>",
)

五、将数据上传到云存储空间

Azure 机器学习使用统一资源标识符 (URI),它们指向云中的存储位置。 使用 URI 可以轻松访问笔记本和作业中的数据。 数据 URI 格式类似于在 Web 浏览器中用于访问网页的 Web URL。 例如:

  • 从公共 https 服务器访问数据:https://<account_name>.blob.core.windows.net/<container_name>/<folder>/<file>
  • 从 Azure Data Lake Gen 2 访问数据:abfss://<file_system>@<account_name>.dfs.core.windows.net/<folder>/<file>

Azure 机器学习数据资产类似于 Web 浏览器书签(收藏夹)。 可以创建数据资产,然后使用易记名称访问该资产,而无需记住指向最常用数据的冗长存储路径 (URI)。

通过创建数据资产,还可以创建对数据源位置的引用及其元数据的副本。 由于数据保留在其现有位置中,因此不会产生额外的存储成本,也不会损害数据源的完整性。 可以从 Azure 机器学习数据存储、Azure 存储、公共 URL 和本地文件创建数据资产。

下一个笔记本单元格会创建数据资产。 此代码示例将原始数据文件上传到指定的云存储资源。

每次创建数据资产时,都需要为其创建唯一版本。 如果版本已存在,则会收到错误。 在此代码中,我们将对数据第一次读取使用“initial”。 如果该版本已存在,我们将跳过再次创建它。

还可以省略 version 参数,版本号会为你生成,从 1 开始,然后递增。

在本文中,我们使用名称“initial”作为第一个版本。 创建生产机器学习管道教程也将使用此版本的数据,因此在这里,我们使用你将在该教程中再次看到的值。

from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes# update the 'my_path' variable to match the location of where you downloaded the data on your
# local filesystemmy_path = "./data/default_of_credit_card_clients.csv"
# set the version number of the data asset
v1 = "initial"my_data = Data(name="credit-card",version=v1,description="Credit card data",path=my_path,type=AssetTypes.URI_FILE,
)## create data asset if it doesn't already exist:
try:data_asset = ml_client.data.get(name="credit-card", version=v1)print(f"Data asset already exists. Name: {my_data.name}, version: {my_data.version}")
except:ml_client.data.create_or_update(my_data)print(f"Data asset created. Name: {my_data.name}, version: {my_data.version}")

可以通过选择左侧的“数据”来查看上传的数据。 你将看到数据已上传且数据资产已创建:

file

此数据命名为 credit-card,在“数据资产”选项卡中,可以在“名称”列中看到它。 此数据上传到工作区的默认数据存储 workspaceblobstore,显示在“数据源”列中。

Azure 机器学习数据存储是对 Azure 上现有存储帐户的引用。 数据存储具有以下优势:

  1. 一种通用且易用的 API,可以与不同的存储类型(Blob/文件/Azure Data Lake Storage)和身份验证方法进行交互。
  2. 一种在团队协作时更轻松地发现有用的数据存储的方式。
  3. 在你的脚本中,隐藏基于凭据的数据访问连接信息的方法(服务主体/SAS/密钥)。

六、访问笔记本中的数据

Pandas 直接支持 URI - 此示例演示如何从 Azure 机器学习数据存储读取 CSV 文件:

import pandas as pddf = pd.read_csv("azureml://subscriptions/<subid>/resourcegroups/<rgname>/workspaces/<workspace_name>/datastores/<datastore_name>/paths/<folder>/<filename>.csv")
# 但是,如前所述,可能很难记住这些 URI。 此外,必须手动将 **pd.read\_csv** 命令中的所有 **<_substring_\>** 值替换为资源的实际值。
# 需要为经常访问的数据创建数据资产。 下面是在 Pandas 中访问 CSV 文件的更简单的方法:
%pip install -U azureml-fsspec
import pandas as pd# get a handle of the data asset and print the URI
data_asset = ml_client.data.get(name="credit-card", version=v1)
print(f"Data asset URI: {data_asset.path}")# read into pandas - note that you will see 2 headers in your data frame - that is ok, for nowdf = pd.read_csv(data_asset.path)
df.head()

阅读在交互式开发期间从 Azure 云存储访问数据,详细了解笔记本中的数据访问。


七、创建新版本的数据资产

你可能已注意到,数据需要稍微清理一下,使其适合训练机器学习模型。 它具有:

  • 两个标头
  • 客户端 ID 列;我们不会在机器学习中使用此功能
  • 响应变量名称中的空格

此外,与 CSV 格式相比,Parquet 文件格式成为存储此数据的更好方法。 Parquet 可提供压缩,并维护架构。 因此,若要清理数据并将其存储在 Parquet 中,请使用:

# read in data again, this time using the 2nd row as the header
df = pd.read_csv(data_asset.path, header=1)
# rename column
df.rename(columns={"default payment next month": "default"}, inplace=True)
# remove ID column
df.drop("ID", axis=1, inplace=True)# write file to filesystem
df.to_parquet("./data/cleaned-credit-card.parquet")

此表显示了在前面的步骤中下载的原始 default_of_credit_card_clients.csv .CSV 文件中的数据结构。 上传的数据包含 23 个解释变量和 1 个响应变量,如下所示:

列名变量类型说明
X1解释型给予的信贷金额(新台币):它包括个人消费信贷和他们的家庭(附加)信贷。
X2解释型性别(1 = 男性;2 = 女性)。
X3解释型教育(1 = 研究生;2 = 本科;3 = 高中;4 = 其他)。
X4解释型婚姻状况(1 = 已婚;2 = 单身;3 = 其他)。
X5解释型年龄(年)。
X6-X11解释型过去付款的历史记录。 我们跟踪了过去的每月付款记录(从 2005 年 4 月到 9 月)。 -1 = 按期付款;1 = 付款延迟一个月;2 = 付款延迟两个月; . 8 = 付款延迟 8 个月;9 = 付款延迟 9 个月及以上。
X12-17解释型2005 年 4 月到 9 月账单金额流水(新台币)。
X18-23解释型2005 年 4 月到 9 月的先前付款金额(新台币)。
Y响应默认付款(是 = 1,否 = 0)

接下来,创建数据资产的新_版本_(数据会自动上传到云存储空间)。 对于此版本,我们将添加一个时间值,以便每次运行此代码时,都会创建不同的版本号。

from azure.ai.ml.entities import Data
from azure.ai.ml.constants import AssetTypes
import time# Next, create a new *version* of the data asset (the data is automatically uploaded to cloud storage):
v2 = "cleaned" + time.strftime("%Y.%m.%d.%H%M%S", time.gmtime())
my_path = "./data/cleaned-credit-card.parquet"# Define the data asset, and use tags to make it clear the asset can be used in trainingmy_data = Data(name="credit-card",version=v2,description="Default of credit card clients data.",tags={"training_data": "true", "format": "parquet"},path=my_path,type=AssetTypes.URI_FILE,
)## create the data assetmy_data = ml_client.data.create_or_update(my_data)print(f"Data asset created. Name: {my_data.name}, version: {my_data.version}")

清理的 parquet 文件是最新版本的数据源。 此代码先显示 CSV 版本结果集,然后显示 Parquet 版本:

import pandas as pd# get a handle of the data asset and print the URI
data_asset_v1 = ml_client.data.get(name="credit-card", version=v1)
data_asset_v2 = ml_client.data.get(name="credit-card", version=v2)# print the v1 data
print(f"V1 Data asset URI: {data_asset_v1.path}")
v1df = pd.read_csv(data_asset_v1.path)
print(v1df.head(5))# print the v2 data
print("_____________________________________________________________________________________________________________\n"
)
print(f"V2 Data asset URI: {data_asset_v2.path}")
v2df = pd.read_parquet(data_asset_v2.path)
print(v2df.head(5))

八、清理资源

停止计算实例

如果不打算现在使用它,请停止计算实例:

  1. 在工作室的左侧导航区域中,选择“计算”。
  2. 在顶部选项卡中,选择“计算实例”
  3. 在列表中选择该计算实例。
  4. 在顶部工具栏中,选择“停止”。

删除所有资源

如果你不打算使用已创建的任何资源,请删除它们,以免产生任何费用:

  1. 在 Azure 门户中,选择最左侧的“资源组” 。

  2. 从列表中选择你创建的资源组。

  3. 选择“删除资源组”。

file

  1. 输入资源组名称。 然后选择“删除”。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/157011.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 10.0 framework关于systemUI定制之导航栏透明背景的功能实现

1.概述 在10.0的系统产品定制化开发中,在对于系统原生SystemUI的导航栏背景在沉浸式导航栏的 情况下默认是会随着背景颜色的变化而改变的,在一些特定背景下导航栏的背景也是会改变的,所以由于产品开发需要 要求需要设置导航栏背景为透明的,所以就需要在Activity创建的时候…

【贝叶斯回归】【第 1 部分】--pyro库应用

Bayesian Regression - Introduction (Part 1) — Pyro Tutorials 1.8.6 documentation 一、说明 我们很熟悉线性回归的问题&#xff0c;然而&#xff0c;一些问题看似不似线性问题&#xff0c;但是&#xff0c;用贝叶斯回归却可以解决。本文使用土地平整度和国家GDP的关系数据…

10.30寄存器,寄存器堆

寄存器 8位环形移位寄存器 module shift_regist (input wire clk,input wire rstn,input wire [7:0]D,output reg [7:0]Q ); always (posedge clk or negedge rstn) beginif(!rstn)Q<8b000000;elseQ<{D[6:0],D[7]} ; end endmodule //shift_regist 输入有时钟…

gRPC源码剖析-Builder模式

一、Builder模式 1、定义 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的的表示。 2、适用场景 当创建复杂对象的算法应独立于该对象的组成部分以及它们的装配方式时。 当构造过程必须允许被构造的对象有不同的表示时。 说人话&#xff1a…

Ubuntu 使用 nginx 搭建 https 文件服务器

Ubuntu 使用 nginx 搭建 https 文件服务器 搭建步骤安装 nginx生成证书修改 config重启 nginx 搭建步骤 安装 nginx生成证书修改 config重启 nginx 安装 nginx apt 安装&#xff1a; sudo apt-get install nginx生成证书 使用 openssl 生成证书&#xff1a; 到对应的路径…

Android广播BroadcastReceiver

BroadcastReceiver组件 BroadcastReceiver是Android中的一个组件&#xff0c;用于接收和处理系统广播或应用内广播。它可以监听系统事件或应用内自定义的广播&#xff0c;并在接收到广播时执行相应的操作。 广播是一种用于在应用组件之间传递消息的机制。通过发送广播&#x…

C++STL---Vector、List所要掌握的基本知识

绪论​ 拼着一切代价&#xff0c;奔你的前程。 ——巴尔扎克&#xff1b;本章主要围绕vector和list的使用&#xff0c;以及容器底层迭代器失效问题&#xff0c;同时会有对原码的分析和模拟实现其底层类函数。​​​​话不多说安全带系好&#xff0c;发车啦&#xff08;建议电脑…

数据结构(三):栈及面试常考的算法

一、栈介绍 1、定义 栈也是一种数据呈线性排列的数据结构&#xff0c;不过在这种结构中&#xff0c;我们只能访问最新添加的数据。从栈顶放入元素的操作叫入栈&#xff0c;取出元素叫出栈。 2、优缺点及使用场景 优点&#xff1a;高效的操作、简单易用、空间效率高等 缺点&…

一文2000字使用JMeter进行接口测试教程!(建议收藏)

安装 使用JMeter的前提需要安装JDK&#xff0c;需要JDK1.7以上版本目前在用的是JMeter5.2版本&#xff0c;大家可自行下载解压使用 运行 进入解压路径如E: \apache-jmeter-5.2\bin&#xff0c;双击jmeter.bat启动运行 启动后默认为英文版本&#xff0c;可通过Options – Cho…

pytorch 笔记:GRU

1 介绍 对于输入序列中的每个元素&#xff0c;每一层都计算以下函数&#xff1a; ht​ 是t时刻 的隐藏状态xt​ 是t时刻 的输入ht−1​ 是 t-1时刻 同层的隐藏状态或 0时刻 的初始隐藏状态rt​,zt​,nt​ 分别是重置门、更新门和新门。σ 是 sigmoid 函数∗ 是 Hadamard 乘积。…

Java基础知识梳理(万字解析)

目录 数据类型 变量和常量 变量的命名规范 局部变量 类变量 实例变量 常量 运算符 java程序流程控制 Scanner类简单用法 方法 数组 面向对象Object-Oriented Programming&#xff08;OOP&#xff09; 类 对象 封装 继承 extends 多态 抽象 abstract 接口 i…

基于51单片机的智能手机充电器设计

**单片机设计介绍&#xff0c;1660【毕设课设】基于51单片机和MAX1898的智能手机充电器设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 51单片机智能手机充电器设计介绍 51单片机智能手机充电器是一种可以实现智能快速充电的…