分割資料元件

本文針對 Azure Machine Learning 設計工具中的一個元件進行說明。

您可以使用分割資料元件,將資料集分成兩個不同的集合。

當您需要將影像資料分成定型集合和測試集合時,此元件特別有用。 您也可以自訂分割資料的方式。 某些選項支援將資料隨機化。 其他選項則是針對特定資料類型或模型類型量身打造。

設定元件

提示

選擇分割模式之前,請先閱讀所有選項,以決定所需的分割類型。 如果您變更分割模式,可能會重設所有其他選項。

  1. 「分割資料」元件新增至您在設計工具中的管線。 您可以在 [資料轉換] 下方的 [取樣與分割] 類別中,找到此元件。

  2. 分割模式:根據您擁有的資料類型以及您要如何分割資料,選擇下列其中一個模式。 每個分割模式的選項各有不同。

    • 分割資料列:如果您只想要將資料分割成兩個部分,請使用此選項。 您可以指定將資料配置在每個分割中的百分比。 依預設,會以 50/50 的比例分割資料。

      您也可以將每個群組中所選取的資料列隨機化,並使用分層取樣。 在分層取樣中,您必須選取一個資料行的資料,這些資料是您想要將其值平均地分配給兩個結果資料集的資料。

    • 規則運算式分割:當您想要透過測試單一資料行的值來分割資料集時,請選擇此選項。

      例如,如果您要分析情感,您可以檢查文字欄位中是否有特定的產品名稱存在。 然後,您可以將資料集分割成具有目標產品名稱的資料列,和不具有目標產品名稱的資料列。

    • 相對運算式分割:每當您想要將條件套用至數字資料行時,請使用此選項。 此數字可以是日期/時間欄位、包含年齡或金額的資料行,甚或是百分比。 例如,您可能會想要根據項目的成本來分割資料集、依年齡範圍將人員分組,或依行事曆日期來分隔資料。

分割資料列

  1. 「分割資料」元件新增至您在設計工具中的管線,並與您想要分割的資料集連線。

  2. 針對 [分割模式],請選取 [分割資料列]。

  3. 第一個輸出資料集中的資料列比例:使用此選項可決定要將多少個資料列放入第一個 (左側) 輸出。 所有其他資料列都會放入第二個 (右側) 輸出。

    比率代表傳送至第一個輸出資料集的資料列百分比,因此您必須輸入介於 0 和 1 之間的小數點數字。

    例如,如果您輸入的值為 0.75,則資料集將會以 75/25 比率分割。 在此分割中,75% 的資料列將傳送至第一個輸出資料集。 剩餘的 25% 將傳送至第二個輸出資料集。

  4. 如果您想要將所選的資料隨機分成兩個群組,請選取 [隨機分割] 選項。 這是當您在建立定型和測試資料集時慣用的選項。

  5. 隨機種子:如果 [隨機分割] 設為 false,則將忽略此參數。 否則,請輸入非負整數值,以啟動待使用執行個體的非虛擬亂數序列。 所有會產生隨機數字的元件中都使用此預設種子。

    指定種子可使結果重現。 如果您需要重複取得分割作業的結果,則應該為亂數產生器指定相同的種子數目。

  6. 分層分割:將此選項設定為 True,以確保兩個輸出資料集在分層資料行分層索引鍵資料行中包含值的代表性樣本。

    使用分層取樣時,資料會分割,讓每個輸出資料集取得每個目標值大致相同的百分比比例。 例如,您可能會想要確保定型集合和測試集合大致上與結果或某些其他資料行 (例如性別) 相關。

  7. 提交管線。

選取規則運算式

  1. 分割資料元件新增至您的管線,並作為輸入與您想要分割的資料集連線。

  2. 針對分割模式,請選取 [規則運算式分割]。

  3. 在 [規則運算式] 方塊中,輸入有效的規則運算式。

    規則運算式應遵循規則運算式的 Python 語法。

  4. 提交管線。

    根據您提供的規則運算式,資料集會分割成兩組資料列:一是包含符合該運算式的值的資料列,一是所有剩餘的資料列。

下列範例示範如何使用 [規則運算式] 選項分割資料集。

一個完整的詞

此範例將所有在資料行 Text 中包含文字 Gryphon 的資料列放置到第一個資料集。 其他資料列則放置在 [分割資料] 的第二個輸出。

    \"Text" Gryphon  

Substring

這個範例會在資料集其第二個資料行內的任何位置尋找指定的字串。 在此處會以索引值 1 表示位置。 該比對會區分大小寫。

(\1) ^[a-f]

第一個結果資料集包含索引資料行開頭為以下字元的所有資料列:abcdef。 所有其他資料列都會導向至第二個輸出。

選取相對運算式

  1. 「分割資料」元件新增至您的管線,並作為輸入與您想要分割的資料集連線。

  2. 針對分割模式,請選取 [相對運算式]。

  3. 在 [關聯運算式] 方塊中,輸入在單一資料行上執行比較作業的運算式。

    針對數值資料行

    • 此資料行包含任何數值資料類型的數字,包括日期和時間資料類型。
    • 運算式最多只能參考一個資料行名稱。
    • 使用 & 符號字元進行 AND 運算。 使用縱線字元 | 進行 OR 運算。
    • 支援下列運算子:<><=>===!=
    • 您無法使用 () 將運算分組。

    對於字串資料行

    • 支援下列運算子:==, !=
  4. 提交管線。

    運算式會將資料集分割成兩組資料列:一組資料列含符合條件的值,另一組則是其餘所有的資料列。

下列範例示範如何使用「分割資料」元件中的 [相對運算式] 選項來分割資料集。

日曆年度

常見的案例是依年份分割資料集。 下列運算式會選取資料行 Year 中的值大於 2010 的所有資料列。

\"Year" > 2010

日期運算式必須考慮資料資料行中包含的所有日期部分。 資料資料行中的日期格式必須一致。

例如,在使用格式 mmddyyyy 的日期資料行中,運算式應如下所示:

\"Date" > 1/1/2010

Column index

下列運算式示範如何使用資料行索引,在資料集的第一個資料行中選取所含的值小於或等於為 30、但不等於 20 的所有資料列。

(\0)<=30 & !=20

後續步驟

請參閱 Azure Machine Learning 可用的元件集