[DAY20] 用 Azure Machine Learning SDK 建立 Dataset

DAY20 用 Azure Machine Learning SDK 建立 Dataset

大家还记得 Datastore 和 Dataset 的关系吗?我们再复习一下哦!

我们可以把 Datastores 理解成 Data Connector 的概念。它储存资料的连线资讯,例如说你的资料在SQL database 里,或者在 Azure Blob 里,我们就可以透过 Datastores,安全地取得你的资料。而 Dataset,就是我们在做 Machine Learning 时的那个 Dataset,一般翻译成资料集。

我们在前面使用了图形化介面,点一点就建立好我们 Azure Machine Learning(下称 AML) 的 Dataset。今天我们就来使用 SDK 建立 Dataset 吧!

我们从 Datastore 来建立 Dataset,有两种形式,一种是表格形式的,一种是档案形式的。前者就是我们之前建立的铁达尼号,後者就是我们之前建立的宝可梦。

用 AML SDK 建立 Dataset(从 Datastore )

  1. 如果我们要建立表格形式的 Dataset 的话,要用 from_delimited_files 这个方法。注意在做 Dataset 时,要 import Dataset,还有要提供一个 tuple 哦!程序码节录如下:
from azureml.core import Dataset

datastore = ws.datastores.get("您的datastore名称")

csv_path = (datastore, "*.csv")

dataset = Dataset.Tabular.from_delimited_files(path=csv_path) # 这里 path 要给一个 tuple 或是 List(tuple)
# 也可以去预设栏位的型别
# dataset = Dataset.Tabular.from_delimited_files(path=csv_path, set_column_types={'Survived': DataType.to_bool()})
dataset = dataset.register(workspace=ws, name='titanic_sdk') 
  1. 我们进到 UI 介面检查,如下图,发现已经成功建立了。
    Build dataset with azure machine learning sdk

用 AML SDK 建立 Dataset(从本地端档案上传)

  1. 接着我们从本地端档案上传的方式,来建立一个 Dataset。我们就上传之前做过的宝可梦的图片档吧!程序码节录如下:
from azureml.core import Dataset

datastore = ws.datastores.get("您的datastore名称")

# 因为影像档有很多格式,这里可以把 tuple 做成 List
img_path = [(datastore, "*.jpeg"),
            (datastore, "*.png"),
            (datastore, "*.jpg")]

img_data = Dataset.File.from_files(img_path)
dataset = img_data.register(workspace=ws, name="pokemon_sdk") 
  1. 我们进到 UI 介面检查,如下图,发现已经成功建立了。
    Build dataset with azure machine learning sdk

用 AML SDK 取用 Dataset

  1. Dataset 表格型式的取用很简单,下列程序码就可以取得 Pandas 的 Dataframe 了。
dataset = Dataset.get_by_name(workspace, name='titanic_sdk')
dataset.to_pandas_dataframe()
  1. Dataset 档案型式的取用很简单,下列程序码就可以下载下来了。
dataset = Dataset.get_by_name(workspace, name='pokemon_sdk')
dataset.download(target_path='.', overwrite=False)

Filter Dataset

  1. 您也可以对 Dataset 做 filter,以取得你想要的资料。有三种方法,针对表格形式的、针对档案的 metadata、针对标记资料专案里面的标签。程序码范例参考如下:
# 表格形式的(当然你转成 Pandas dataframe 之後,用 Pandas 内建的功能更强大)
tabular_dataset = tabular_dataset.filter((tabular_dataset['name'].contains('koko')) & (tabular_dataset['age'] > 18))

# 档案形式的
file_dataset = file_dataset.filter((file_dataset.file_metadata['CreatedTime'] < datetime(2020,1,1)) | (file_dataset.file_metadata['Size'] < 1024))


# 标记资料专案里面标签的
labeled_dataset = labeled_dataset.filter((labeled_dataset['label']['Pikachu'] == True) & (labeled_dataset.file_metadata['Size'] > 10000))

以上就是今天我们的建立 Dataset 和取用啦!明天我们再来建立运算资源。


<<:  IT铁人DAY 20-Proxy 代理模式

>>:  Day20# Leetcode - Roman to Integer

Day-27 特集:测试驱动开发 TDD

所谓测试驱动开发(Test-driven development, TDD),即「先写测试再开发」,...

DAY 28:Command Pattern,将动作已指令一个一个完成

什麽是 Command Pattern? 将建立指令与实际执行分离 问题情境 PS5 有特定操作 C...

[面试][前端]如何判断专案要使用 CSR 还是 SSR?

如果前辈说什麽你就做什麽,长久下来你会失去判断能力。 除非你是草创成员,不然进入一间公司後,往往都...

【Day 7】Dockerfile x 连千毅:从一排汉堡认识容器映像档

tags: 铁人赛 Docker Dockerfile 汉堡 概述 碎念时间 【以皮毛技术与 AWS...

OpenCart 4.0 内建一页式结帐

今天稍微测试了一下 OpenCart 4.0,很多地方不同於 OpenCart 3,之前光是看到规格...