iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
AI & Data

一起學習 Azure Machine Learning 系列 第 20

[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 和取用啦!明天我們再來建立運算資源。


上一篇
[DAY19] 用 Azure Machine Learning SDK 建立 Datastore
下一篇
[DAY21] 用 Azure Machine Learning SDK 建立運算資源
系列文
一起學習 Azure Machine Learning 30

尚未有邦友留言

立即登入留言