編輯中繼資料

重要

Machine Learning 工作室 (傳統) 的支援將於 2024 年 8 月 31 日結束。 建議您在該日期之前轉換成 Azure Machine Learning

自 2021 年 12 月 1 日起,您將無法建立新的 Machine Learning 工作室 (傳統) 資源。 在 2024 年 8 月 31 日之前,您可以繼續使用現有的 Machine Learning 工作室 (傳統) 資源。

ML 工作室 (傳統) 文件即將淘汰,未來將不再更新。

編輯資料集內資料行的相關中繼資料

類別: 資料轉換/操作

注意

適用于僅限機器學習 Studio (傳統)

Azure Machine Learning 設計工具中提供類似的拖放模組。

模組概觀

本文描述如何使用機器學習 Studio (傳統) 中的 [編輯中繼資料] 模組,來變更與資料集內的資料行相關聯的中繼資料。 資料集中的值和資料類型不會實際改變;哪些變更是機器學習內的中繼資料,可告知下游元件如何使用資料行。

常見的中繼資料變更可能包括:

  • 將布林值或數值資料行視為類別值

  • 指出包含類別標籤的資料行,或是您要分類或預測的值

  • 將資料行標示為特徵

  • 將日期/時間值變更為數值,反之亦然

  • 重新命名資料行

當您需要修改資料行的定義時,請使用 [ 編輯中繼資料 ],通常是為了符合下游模組的需求。 例如,某些模組只能使用特定的資料類型,或需要資料行上的旗標,例如 IsFeatureIsCategorical

執行必要的作業之後,您可以將中繼資料重設為原始狀態。

如何設定編輯中繼資料

  1. 在機器學習 Studio (傳統) 中,將 [編輯中繼資料] 模組新增至您的實驗,並連接您想要更新的資料集。 您可以在 [操作] 分類中的 [資料轉換] 下找到它。

  2. 按一下 [ 啟動資料行選取器 ],並選擇要使用的資料行或資料行集合。 您可以依名稱或索引個別選擇資料行,也可以依類型選擇資料行群組。

    提示

    需要使用資料行索引的協助嗎? 請參閱 技術附注 一節。

  3. 若要為所選資料行指派不同的資料類型,請選取 [資料類型] 選項。 某些作業可能需要變更資料類型:例如,如果您的源資料集有以文字形式處理的數位,您必須先將它們變更為數值資料類型,才能使用數學運算。

    • 支援的資料類型為 StringIntegerFloating pointBooleanDateTimeTimeSpan

    • 如果選取多個資料行,您必須將中繼資料變更套用至 所有 選取的資料行。 例如,假設您選擇2-3 個數字資料行。 您可以將它們全部變更為字串資料類型,並在一項作業中將它們重新命名。 不過,您無法將一個資料行變更為字串資料類型,並將另一個資料行從浮點數變更為整數。

    • 如果您未指定新的資料類型,資料行中繼資料不變。

    • 資料類型的變更只會影響與資料集相關聯的中繼資料,以及在下游作業中處理資料的方式。 實際資料行值不會更動,除非您在資料行上執行不同的作業 (例如捨入)。 您可以隨時使用 [ 編輯中繼資料 ] 來重設資料行資料類型,以復原原始的資料類型。

    注意

    若您變更 DateTime 類型任何類型的數字,請將 [DateTime 格式] 欄位保留空白。 目前,您不能指定目標資料格式。

如果數位與其中一個支援的 .net DateTime 物件相容,機器學習可以將日期轉換成數位,或將數位轉換成日期。 如需詳細資訊,請參閱 技術附注 一節。

  1. 請選取 [類別] 選項,以指定所選資料行中應視為類別的值。

    例如,您可能有一個包含數位0、1和2的資料行,但知道數位實際上表示「Smoker」、「非 Smoker」和「未知」。 在這種情況下,藉由將資料行標記為類別,您可以確保這些值不會用於數值計算,而只會將資料分組。

  2. 如果您想要變更機器學習使用模型中資料的方式,請使用 [欄位] 選項。

    • 功能:使用此選項可將資料行標示為特徵,以便搭配只在特徵資料行上操作的模組使用。 根據預設,所有資料行一開始會視為特徵來處理。

    • 標籤:使用此選項可將標籤標示 (也稱為可預測屬性,或目標變數) 。 許多模組都必須至少有一個 (,且資料集中只有一個) 標籤資料行。

      在許多情況下,機器學習可以推斷某個資料行包含類別標籤,但藉由設定此中繼資料,您可以確保正確識別該資料行。 設定此選項並不會變更資料值,而只是某些機器學習演算法處理資料的方式。

    • 權數:使用此選項搭配數值資料,表示資料行值代表用於機器學習評分或定型作業的加權。 資料集中只能有一個加權資料行,而且資料行必須是數值。 此選項只適用于這些模型: Two-Class 羅吉斯回歸、Two-Class 支援向量機器,以及 Two-Class 類神經網路。

    提示

    有不符合這些類別的資料嗎? 例如,您的資料集可能包含不做為變數的唯一識別碼之類的值。 有時,在模型中使用時,識別碼可能會造成問題。

    幸好「在幕後」機器學習會保留您的所有資料,因此您不需要從資料集中刪除這類資料行。 當您需要對某些特殊的資料行集執行作業時,只要使用 [ 資料集] 中的 [選取資料行 ] 模組,即可暫時移除所有其他資料行。 稍後您可以使用 [ 加入資料行 ] 模組,將資料行合併回資料集。

  3. 使用下列選項可清除先前的選取項目,並將中繼資料還原為預設值。

    • 清除特徵:使用此選項以清除特徵旗標。

      由於所有資料行一開始會視為功能,因此對於執行數學運算的模組,您可能需要使用此選項來防止將數值資料行視為變數。

    • 清除標籤:使用此選項以移除特定資料行的標籤中繼資料。

    • 清除分數:使用此選項以移除特定資料行的分數中繼資料。

      目前無法在機器學習中使用將資料行明確標示為分數的功能。 不過,某些作業會導致資料行在內部被標示為分數。 此外,自訂 R 模組可能會輸出分數值。

    • 清除權數:使用此選項可從指定的資料行中移除 加權 中繼資料。

  4. 針對新的資料 行名稱,輸入所選資料行的新名稱。

    • 資料行名稱只能使用 UTF-8 編碼所支援的字元。 不允許空的字串、null 或完全由空格組成的名稱。

    • 若要重新命名多個資料行,請依資料行索引的順序,將名稱輸入為逗點分隔清單。

    • 所有選取的資料行都必須重新命名。 您無法省略或略過資料行。

    提示

    如果您需要重新命名多個資料行,您可以貼上預先準備的逗號分隔字串。 或者,使用 [執行 R 腳本] 或 [套用SQL 轉換模組]。 請參閱 技術附注 一節中的程式碼和範例。

  5. 執行實驗。

範例

如需如何使用 [ 編輯元 資料] 來準備資料和建立模型的範例,請參閱 Azure AI 資源庫

  • Breast 癌症偵測:聯結至資料集之後,資料行名稱會變更。 [ 患者識別碼 ] 資料行也會標示為 類別 ,以確保不會在計算中使用,而是以字串值的形式來處理。

  • Twitter 情感分析:示範如何使用 編輯中繼資料 來確保將資料行視為特徵。 之後在實驗中,就會清除特徵中繼資料。

  • 資料處理和分析:在此範例中, 編輯中繼資料 是用來定義從網頁載入之資料的新資料行名稱。

技術說明

本節包含已知問題、常見問題,以及一些常見因應措施的範例。

已知問題

  • 不支援自訂中繼資料。 您無法在機器學習中使用自訂中繼資料,也不能在編輯元資料之外編輯資料行中繼資料。 例如,您無法加入表示資料行是唯一識別碼的中繼資料,或加入其他描述性屬性。 機器學習僅支援在 R 中使用的中繼資料屬性,以使用因素、功能、權數和標籤。

  • 不支援的資料類型。 不支援下列數值資料類型: Double (decimal) 和 TimeStamp。

  • 識別分數資料行。 目前,[ 編輯中繼資料 ] 中沒有任何選項可將資料行標示為包含 分數。 不過,您可以使用 [ 執行 R 腳本 ] 模組搭配類似下面的腳本,指出資料行包含分數:

    dataset <- maml.mapInputPort(1)   
    attr(dataset$x, "label.type")= "True Labels"  
    attr(dataset$y, "feature.channel")= "Multiclass Classification Scores"  
    attr(dataset$y, "score.type")= "Assigned Labels"  
    maml.mapOutputPort("dataset");
    
  • 日期時間格式的問題。 機器學習所使用的基礎 datetime 資料類型為 POSIXct

    如果資料行中的所有日期都可由預設剖析器剖析,則會將資料行匯入並視為字串資料。

    如果您嘗試使用 [編輯中繼資料] 模組將資料行轉換成 DateTime ,並出現錯誤,表示日期的格式不是 .net 預設接受的格式。 在此情況下,建議您使用 [執行 R 腳本] 模組或 [套用SQL 轉換模組,將您的資料行轉換為預設剖析器所接受的格式。

    DateTime. Parse 方法

    標準日期和時間格式字串

使用資料行索引選取資料行

在非常大型的資料集中,手動輸入或選取所有資料行名稱並不可行。 使用資料行索引是您可以用來指定多個資料行的一個快捷方式。 本節提供使用資料行索引的一些秘訣。

例如,開啟 [資料行選取器],按一下 [ 使用規則],選取 [ 包含 ] 和 [資料 行索引],然後輸入範圍或數位系列,如下所示:

  • 輸入 1-20 以選取前20個數據行
  • 輸入 5-20 以選取從5開始的資料行範圍,包括資料行20。
  • 輸入 1,5,10,15 以選取不連續的資料行
  • 輸入 1-2, 5 以選取資料行1、2和5,略過資料行3和4
  • 您無法輸入大於資料集中可用之資料行數目的索引值。

下列實驗提供一些選取和修改多個資料行之方法的範例:

  • 二元分類: Breast 癌症偵測:原始資料包含從試算表匯入期間產生的許多空白資料行。 在 分割資料 模組中指定資料行1-11,即可移除額外的資料行。

  • 從 UCI 下載資料集:示範如何使用 [ 手動輸入資料 ] 模組,將資料行名稱提供為清單,然後使用 [ 執行 R 腳本 ] 模組,將清單插入資料集做為標題。

  • Regex 選取資料行:此實驗提供自訂模組,可讓您將正則運算式套用至資料行名稱。 您可以使用此模組作為 編輯中繼資料的輸入。

修改資料行名稱的替代方法

如果您有多個資料行要重新命名,您可以使用 [執行 R 腳本] 模組或 [套用SQL 轉換模組]。

使用 R 腳本

機器學習使用的資料集會以資料的形式傳遞到此模組中。這表示您可以使用 R colnames() 函數和其他相關的 r 函數,來列出或變更資料行名稱。

例如,下列程式碼會建立新的資料行名稱清單,然後將該清單套用至輸入資料集,以產生新的資料行標題。

irisdata <- maml.mapInputPort(1);    
newnames <- c("CLASS", "SEPAL  LENGTH", "SEPAL WIDTH", "PETAL LENGTH", "PETAL WIDTH");
colnames(irisdata) = newnames
maml.mapOutputPort("irisdata");

下列範例會在 R 中使用正則運算式,以全域取代資料行名稱 irisdata 中指定之字串的所有實例:

# Map input dataset to variable
newirisdata <- maml.mapInputPort(1) # class: data.frame
names(newirisdata) <- gsub("col", "iris", names(newirisdata))
maml.mapOutputPort("newirisdata");

使用 SQL

下列範例會採用資料集做為輸入,然後使用 as 關鍵字來變更資料行名稱。

SELECT col1 as [C1], 
  col2 as [C2], 
  col3 as [C3], 
  col4 as [C4],
  col5 as [C5] 
FROM t1;

預期的輸入

名稱 類型 說明
資料集 資料表 輸入資料集

模組參數

名稱 範圍 類型 預設 描述
資料行 任意 ColumnSelection 選擇應套用變更的資料行。
資料類型 List 中繼資料編輯器的資料類型 未變更 指定資料行的新資料類型。
類別 List 中繼資料編輯器的分類 未變更 指出是否應將資料行標示為類別。
欄位 List 中繼資料編輯器的旗標 未變更 指定學習演算法是否應將資料行視為特徵或標籤。
新資料行名稱 任意 String 輸入資料行的新名稱。

輸出

名稱 類型 說明
結果資料集 資料表 中繼資料已變更的資料集

例外狀況

例外狀況 描述
錯誤 0003 如果一或多個輸入資料庫是 Null 或空白,就會發生例外狀況。
錯誤 0017 如果一或多個指定的資料行具有目前的模組不支援的型別,就會發生例外狀況。
錯誤 0020 如果傳遞給模組的某些資料集的資料行數目太少,就會發生例外狀況。
錯誤 0031 如果資料行集的資料行數目少於所需,就會發生例外狀況。
錯誤 0027 當兩個物件必須具有相同的大小,但實際上它們的大小並不相同時,就會發生例外狀況。
錯誤 0028 當資料行集包含重複的資料行名稱且不允許如此時,就會發生例外狀況。
錯誤 0037 如果指定多個標籤資料行,但只允許一個,就會發生例外狀況。

如需 Studio (傳統) 模組特定的錯誤清單,請參閱機器學習錯誤碼

如需 API 例外狀況的清單,請參閱機器學習 REST API 錯誤碼

另請參閱

操作
資料轉換
A-Z 模組清單