選取資料集中的資料行
重要
Machine Learning 工作室 (傳統) 的支援將於 2024 年 8 月 31 日結束。 建議您在該日期之前轉換成 Azure Machine Learning。
自 2021 年 12 月 1 日起,您將無法建立新的 Machine Learning 工作室 (傳統) 資源。 在 2024 年 8 月 31 日之前,您可以繼續使用現有的 Machine Learning 工作室 (傳統) 資源。
ML 工作室 (傳統) 文件即將淘汰,未來將不再更新。
選取作業中要包含在資料集之內或排除在資料集之外的資料行
類別: 資料轉換/操作
模組概觀
本文描述如何在機器學習 Studio (傳統) 中使用資料集模組中的選取資料行,以選擇要在下游作業中使用的資料行子集。 此模組不會實際移除源資料集中的資料行;相反地,它會建立資料行的子集,就像資料庫 視圖 或 投影一樣。
當您需要限制下游作業可用的資料行,或如果您想要藉由移除不必要的資料行來縮減資料集的大小時,此模組特別有用。
資料集中的資料行會以與原始資料中相同的順序輸出,即使您以不同順序指定也是一樣。
如何使用資料集中的選取資料行
此模組沒有任何參數。 您可以使用資料行選取器來選擇要包含或排除的資料行。
依名稱選擇資料行
模組中有多個選項可供依名稱選擇資料行:
篩選和搜尋
按一下 [依名稱] 選項。
如果您已連接已填入的資料集,則應該會出現可用的資料行清單。 如果沒有出現任何資料行,您可能需要執行上游模組來查看資料行清單。
若要篩選清單,請在搜尋方塊中輸入。 例如,如果您在搜尋方塊中輸入字母
w
,該清單會經過篩選,以顯示包含字母w
的資料行名稱。選取資料行,然後按一下向右箭號按鈕,將選取的資料行移至右窗格中的清單。
- 若要選取連續的資料行名稱範圍,請按 Shift+按一下。
- 若要將個別資料行新增至選取範圍,請按 Ctrl+按一下。
按一下核取記號按鈕以儲存並關閉。
使用名稱結合其他規則
按一下 [使用規則] 選項。
選擇規則,例如顯示特定資料類型的資料行。
然後,按一下該類型個別資料行的名稱,將它們新增至選取範圍清單。
輸入或貼上以逗號分隔的資料行名稱清單
如果您的資料集很大,使用索引或產生的名稱清單可能比較容易,而不是個別選取資料行。 假設您已預先準備好清單:
- 按一下 [使用規則] 選項。
- 選取 [無資料行],選取 [包含],然後在有紅色驚嘆號的文字方塊內按一下。
- 貼上或輸入先前已驗證的資料行名稱的逗號分隔清單。 如果有任何資料行的名稱無效,您就無法儲存模組,因此請務必事先檢查名稱。
您也可以使用此方法來指定使用其索引值的資料行清單。 如需如何使用資料行索引的秘訣,請參閱 範例 一節。
依類型選擇
如果您使用 [使用規則] 選項,就可以對資料行選取範圍套用多個條件。 例如,您可能只需要取得數值資料類型的特徵資料行。
[ 開始 ] 選項會決定您的起點,而且對於瞭解結果而言非常重要。
如果您選取 [所有資料行] 選項,則會將所有資料行新增至清單中。 然後,您必須使用 [排除] 選項來移除符合特定條件的資料行。
例如,您可能會從所有資料行開始,然後依名稱或依類型來移除資料行。
如果您選取 [無資料行] 選項,資料行的清單就會從空白開始。 然後,您可以指定要將資料行新增至清單的條件。
如果您套用多個規則,則每個條件都是加法。 例如,假設您一開始沒有任何資料行,那麼請新增規則來取得所有數值資料行。 在汽車價格資料集中,其產生 16 個資料行。 然後,按一下 [正負號] 以新增條件,然後選取 [ +包含所有功能]。 產生的資料集會包含所有數值資料行,再加上所有特徵資料行,包括一些字串特徵資料行。
依資料行索引選擇
資料行索引指的是原始資料集內的資料行順序。
- 資料行會循序從 1 開始編號。
- 若要取得資料行的範圍,請使用連字號。
- 不允許開放端的指定 (例如
1-
或-3
)。 - 不允許重複的索引值 (或資料行名稱),而且可能會導致錯誤。
例如,假設您的資料集至少有八個資料行,您可以貼上下列任何範例,以傳回多個非連續的資料行:
8,1-4,6
1,3-8
1,3-6,4
最後一個範例不會產生錯誤;但是,它會傳回資料行 4
的單一執行個體。
如需有關使用資料行索引的其他秘訣,請參閱 範例 一節。
變更資料行的順序
[允許重複項目並保留選取範圍中的資料行順序] 選項會以空白清單開始,並新增您依名稱或索引指定的資料行。 不同於其他選項 (其一律會以資料行的「自然順序」傳回),此選項會以您指定或列出資料行的順序來輸出資料行。
例如,在具有 Col1、Col2、Col3 和 Col4 資料行的資料集中,您可以藉由指定下列其中一個清單來反轉資料行的順序,並去除資料行 2:
Col4, Col3, Col1
4,3,1
範例
如需如何使用 資料集中的選取資料行的範例,請參閱模型元件 庫中的下列範例實驗:
Breast 癌症偵測範例會使用資料集中的選取資料行來移除尾端的空白資料行、移除具有重復資料的資料行,以及投影定型和測試集。
在 飛行延遲預測 範例中, 選取資料集中的資料行 來排除所有字串資料行,並依名稱排除資料行。
在「 學生成績預測 」範例中, 選取 [資料集] 中的資料行 以取得所有時態性功能,並排除多個資料行。
在 [ 比較回歸輸入變數 ] 範例中, 選取 [資料集中 的資料行] 來排除資料 行,因為它是錯誤的資料類型,適用于其後的數學運算。
資料行選取的常見案例
下列範例將說明一些一般使用者在機器學習中套用 選取資料行 的方式,並提供一些如何選取資料行的秘訣:
我想要從資料集移除文字資料行,以便將數學運算套用到所有數值資料行。
許多作業都需要只有數值資料行出現在資料集中。 您可以暫時移除可能造成錯誤的資料行,方法是排除文字並排除類別資料行 (代表) 的分隔類別。
按一下 [ 啟動資料行選取器]。
在 [開始于] 中,選取 [所有資料行]。
選取 [ 排除 ] 選項,選取 [資料 行類型],然後選取 [ 字串]。
按一下加號 (+) 來新增條件。
選取 [ 排除 ] 選項,選取 [資料 行類型],然後選取 [ 類別目錄]。
我只需要將特徵選取套用至類別特徵資料行。
如果您需要分隔類似型別的資料行,您可以套用多個條件。 例如,功能可以是類別或數值,但某些特徵選取模組不允許非數值欄位,因此您必須先取得特徵,然後加入條件來只取得數值特徵。
按一下 [ 啟動資料行選取器]。
在 [開始于] 中,選取 [沒有資料行]。
選取 [ 包含 ] 選項,然後選取 [ 所有功能]。
按一下加號 (+) 來新增條件。
選取 [ 包含 ] 選項,選取 [資料 行類型],然後選取 [ 類別目錄]。
我需要將不同的正規化作業套用至不同的數值資料行。
套用數學運算之前,您可能需要將整數與浮點數分隔,依此類推。 若要這樣做,請使用資料類型並套用多個條件。
按一下 [ 啟動資料行選取器]。
在 [開始于] 中,選取 [沒有資料行]。
選取 [ 包含 ] 選項,選取 [資料 行類型],然後選取 [ 數值]。
按一下加號 (+) 來新增條件。
選取 [ 包含 ] 選項,選取 [資料 行類型],然後選取與下游操作不相容的數數值型別。
使用選取器可選擇的資料行太多。
通常,匯入資料集之後,您會發現它有許多資料行不需要進行模型化。 不過,您想要在稍後保留輸出,或用於識別案例。 若要這麼做,您可以使用 [ 加入資料行],將資料集分割成兩個部分 (中繼資料,並將資料行分割成所需的模型) 和更新的重新合併資料行。
按一下 [ 啟動資料行選取器]。
在 [開始于] 中,選取 [沒有資料行]。
選取 [ 包含 ] 選項,選取 [資料 行類型],然後選取 [ 功能]。
按一下加號 (+) 來新增條件。
選取 [ 包含 ] 選項,選取 [資料 行類型],然後選取 [ 標籤]。
重複這些步驟,但從所有資料行開始,然後排除功能和標籤資料行,以建立只有中繼資料的資料集。
我不知道我需要的資料行索引值。
如果您的資料集中只有幾個資料行,您可以使用 [ 視覺化 ] 選項查看前100個數據列,然後找出哪一個資料行是索引1、2等等。
機器學習中的索引從1開始,所以第一個資料行一律為1。
若要取得最後一個資料行的索引,請在 [資料行選取器:可用的資料行] 和 [選取的資料行] 中查看兩個數據行清單。 [資料行] 清單下方的灰色列會顯示每個清單中的資料行計數。 因此,如果有24個數據行可供使用,而且選取了兩個數據行,則總共會有26個數據行,而最後一個資料行的索引為26。
解壓縮資料集架構的另一個選項是使用 [ 執行 R 腳本 ] 模組,取得具有索引編號的資料行名稱。
連線您的資料集加入至「執行 R 腳本」模組。
在模組中,輸入如下的腳本來輸出資料行名稱。 從開始
myindex
的那一行會產生一個順序,以順序表示索引。dataset1 <- maml.mapInputPort(1) # class: data.frame mycolnames <-names(dataset1); myindex <- seq(from = 1, to = length(mycolnames), by=1); outdata <- as.data.frame(cbind(myindex, mycolnames)); maml.mapOutputPort("outdata");
汽車價格資料集的結果
myindex mycolnames 1 symboling (表示符號) 2 正規化-損失 3 make
技術說明
如果您熟悉關係資料庫,此課程模組會建立資料的投射;因此,原始名稱Project 資料行。 在資料庫詞彙中,投射是一個函數(例如,SQL transact-sql 或 LINQ 語句),它會採用表格式格式的資料做為輸入,並產生相關的輸出。
在關聯式代數中,投射是一元運算,會以一組屬性名稱的形式寫入。 投影的結果是這些屬性的一部分,並捨棄其他屬性。
預期的輸入
名稱 | 類型 | 說明 |
---|---|---|
資料集 | 資料表 | 輸入資料集 |
模組參數
名稱 | 範圍 | 類型 | 預設 | 描述 |
---|---|---|---|---|
Select columns | 任意 | ColumnSelection | 選取要保留在投射資料集裡的資料行 |
輸出
名稱 | 類型 | 說明 |
---|---|---|
結果資料集 | 資料表 | 輸出資料集 |
例外狀況
例外狀況 | 描述 |
---|---|
錯誤 0001 | 如果找不到資料集的一或多個指定的資料行,就會發生例外狀況。 |
錯誤 0003 | 如果將一個或多個輸入資料集為 null 或空白,會發生例外狀況。 |
如需 Studio (傳統) 模組特定的錯誤清單,請參閱機器學習錯誤碼。
如需 API 例外狀況的清單,請參閱機器學習 REST API 錯誤碼。