編輯中繼資料
重要
Machine Learning 工作室 (傳統) 的支援將於 2024 年 8 月 31 日結束。 建議您在該日期之前轉換成 Azure Machine Learning。
自 2021 年 12 月 1 日起,您將無法建立新的 Machine Learning 工作室 (傳統) 資源。 在 2024 年 8 月 31 日之前,您可以繼續使用現有的 Machine Learning 工作室 (傳統) 資源。
ML 工作室 (傳統) 文件即將淘汰,未來將不再更新。
編輯資料集內資料行的相關中繼資料
類別: 資料轉換/操作
模組概觀
本文描述如何使用機器學習 Studio (傳統) 中的 [編輯中繼資料] 模組,來變更與資料集內的資料行相關聯的中繼資料。 資料集中的值和資料類型不會實際改變;哪些變更是機器學習內的中繼資料,可告知下游元件如何使用資料行。
常見的中繼資料變更可能包括:
將布林值或數值資料行視為類別值
指出包含類別標籤的資料行,或是您要分類或預測的值
將資料行標示為特徵
將日期/時間值變更為數值,反之亦然
重新命名資料行
當您需要修改資料行的定義時,請使用 [ 編輯中繼資料 ],通常是為了符合下游模組的需求。 例如,某些模組只能使用特定的資料類型,或需要資料行上的旗標,例如 IsFeature
或 IsCategorical
。
執行必要的作業之後,您可以將中繼資料重設為原始狀態。
如何設定編輯中繼資料
在機器學習 Studio (傳統) 中,將 [編輯中繼資料] 模組新增至您的實驗,並連接您想要更新的資料集。 您可以在 [操作] 分類中的 [資料轉換] 下找到它。
按一下 [ 啟動資料行選取器 ],並選擇要使用的資料行或資料行集合。 您可以依名稱或索引個別選擇資料行,也可以依類型選擇資料行群組。
提示
需要使用資料行索引的協助嗎? 請參閱 技術附注 一節。
若要為所選資料行指派不同的資料類型,請選取 [資料類型] 選項。 某些作業可能需要變更資料類型:例如,如果您的源資料集有以文字形式處理的數位,您必須先將它們變更為數值資料類型,才能使用數學運算。
支援的資料類型為
String
、Integer
、Floating point
、Boolean
、DateTime
和TimeSpan
。如果選取多個資料行,您必須將中繼資料變更套用至 所有 選取的資料行。 例如,假設您選擇2-3 個數字資料行。 您可以將它們全部變更為字串資料類型,並在一項作業中將它們重新命名。 不過,您無法將一個資料行變更為字串資料類型,並將另一個資料行從浮點數變更為整數。
如果您未指定新的資料類型,資料行中繼資料不變。
資料類型的變更只會影響與資料集相關聯的中繼資料,以及在下游作業中處理資料的方式。 實際資料行值不會更動,除非您在資料行上執行不同的作業 (例如捨入)。 您可以隨時使用 [ 編輯中繼資料 ] 來重設資料行資料類型,以復原原始的資料類型。
注意
若您變更 DateTime 類型任何類型的數字,請將 [DateTime 格式] 欄位保留空白。 目前,您不能指定目標資料格式。
如果數位與其中一個支援的 .net DateTime 物件相容,機器學習可以將日期轉換成數位,或將數位轉換成日期。 如需詳細資訊,請參閱 技術附注 一節。
請選取 [類別] 選項,以指定所選資料行中應視為類別的值。
例如,您可能有一個包含數位0、1和2的資料行,但知道數位實際上表示「Smoker」、「非 Smoker」和「未知」。 在這種情況下,藉由將資料行標記為類別,您可以確保這些值不會用於數值計算,而只會將資料分組。
如果您想要變更機器學習使用模型中資料的方式,請使用 [欄位] 選項。
功能:使用此選項可將資料行標示為特徵,以便搭配只在特徵資料行上操作的模組使用。 根據預設,所有資料行一開始會視為特徵來處理。
標籤:使用此選項可將標籤標示 (也稱為可預測屬性,或目標變數) 。 許多模組都必須至少有一個 (,且資料集中只有一個) 標籤資料行。
在許多情況下,機器學習可以推斷某個資料行包含類別標籤,但藉由設定此中繼資料,您可以確保正確識別該資料行。 設定此選項並不會變更資料值,而只是某些機器學習演算法處理資料的方式。
權數:使用此選項搭配數值資料,表示資料行值代表用於機器學習評分或定型作業的加權。 資料集中只能有一個加權資料行,而且資料行必須是數值。 此選項只適用于這些模型: Two-Class 羅吉斯回歸、Two-Class 支援向量機器,以及 Two-Class 類神經網路。
提示
有不符合這些類別的資料嗎? 例如,您的資料集可能包含不做為變數的唯一識別碼之類的值。 有時,在模型中使用時,識別碼可能會造成問題。
幸好「在幕後」機器學習會保留您的所有資料,因此您不需要從資料集中刪除這類資料行。 當您需要對某些特殊的資料行集執行作業時,只要使用 [ 資料集] 中的 [選取資料行 ] 模組,即可暫時移除所有其他資料行。 稍後您可以使用 [ 加入資料行 ] 模組,將資料行合併回資料集。
使用下列選項可清除先前的選取項目,並將中繼資料還原為預設值。
清除特徵:使用此選項以清除特徵旗標。
由於所有資料行一開始會視為功能,因此對於執行數學運算的模組,您可能需要使用此選項來防止將數值資料行視為變數。
清除標籤:使用此選項以移除特定資料行的標籤中繼資料。
清除分數:使用此選項以移除特定資料行的分數中繼資料。
目前無法在機器學習中使用將資料行明確標示為分數的功能。 不過,某些作業會導致資料行在內部被標示為分數。 此外,自訂 R 模組可能會輸出分數值。
清除權數:使用此選項可從指定的資料行中移除 加權 中繼資料。
針對新的資料 行名稱,輸入所選資料行的新名稱。
資料行名稱只能使用 UTF-8 編碼所支援的字元。 不允許空的字串、null 或完全由空格組成的名稱。
若要重新命名多個資料行,請依資料行索引的順序,將名稱輸入為逗點分隔清單。
所有選取的資料行都必須重新命名。 您無法省略或略過資料行。
執行實驗。
範例
如需如何使用 [ 編輯元 資料] 來準備資料和建立模型的範例,請參閱 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 轉換模組,將您的資料行轉換為預設剖析器所接受的格式。
使用資料行索引選取資料行
在非常大型的資料集中,手動輸入或選取所有資料行名稱並不可行。 使用資料行索引是您可以用來指定多個資料行的一個快捷方式。 本節提供使用資料行索引的一些秘訣。
例如,開啟 [資料行選取器],按一下 [ 使用規則],選取 [ 包含 ] 和 [資料 行索引],然後輸入範圍或數位系列,如下所示:
- 輸入
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 錯誤碼。