移除重複的資料列
重要
Machine Learning 工作室 (傳統) 的支援將於 2024 年 8 月 31 日結束。 建議您在該日期之前轉換成 Azure Machine Learning。
自 2021 年 12 月 1 日起,您將無法建立新的 Machine Learning 工作室 (傳統) 資源。 在 2024 年 8 月 31 日之前,您可以繼續使用現有的 Machine Learning 工作室 (傳統) 資源。
ML 工作室 (傳統) 文件即將淘汰,未來將不再更新。
從資料集移除重複的資料列
類別: 資料轉換/操作
模組概觀
本文描述如何使用機器學習 Studio (傳統) 中的 [移除重復資料列] 模組,從資料集移除可能的重複專案。
例如,假設您的資料如下所示,代表多筆的患者記錄。
PatientID | 縮寫 | 性別 | 年齡 | 已入院 |
---|---|---|---|---|
1 | F.M. | M | 53 | 一月 |
2 | F.A.M. | M | 53 | 一月 |
3 | F.A.M. | M | 24 | 一月 |
3 | F.M. | M | 24 | 二月 |
4 | F.M. | M | 23 | 二月 |
F.M. | M | 23 | ||
5 | F.A.M. | M | 53 |
顯然,此範例中有多個資料行可能有重複的資料。 而實際上是否為重複項,取決於您對資料的瞭解。
例如,您可能知道有許多患者的姓名相同。 您不會刪除使用任何姓名資料行的重複項,而只刪除識別碼 資料行的重複項。 如此一來,就只會篩選出識別碼值重複的資料列,不論患者的姓名是否相同。
或者,您可能會決定允許識別碼欄位中有重複專案,並使用 fileds 的其他組合來尋找唯一的記錄,例如名字、姓氏、年齡和性別。
若要設定準則判定資料列是否重複,您必須指定單一資料行或一組資料行,作為索引鍵使用。 只有當所有索引鍵資料行中的值相等時,才會將兩個資料列視為重複項。
當您執行模組時,它會建立候選資料集,並傳回在您指定的一組資料行之間沒有重複專案的一組資料列。
重要
源資料集未改變;此模組會根據您指定的準則,建立篩選以排除重複專案的新資料集。
如何使用移除重複資料列
將模組新增至您的實驗。 您可以在 [資料轉換]、[操作] 下找到 [移除重復資料列] 模組。
連接您想要檢查是否有重複資料列的資料集。
在 [屬性] 窗格中,[索引鍵資料行選取項目篩選運算式] 下方,按一下 [啟動資料行選取器],選擇用於找出重複項的資料行。
在此內容中,索引鍵 不代表唯一的識別碼。 系統會將您使用 [資料行選取器] 選取的所有資料行,皆指定為索引鍵資料行。 所有未選取的資料行都會被視為非索引鍵資料行。 您選取作為索引鍵的資料行組合,會決定記錄的唯一性。 (將它視為使用多個相等聯結的 SQL 語句。 )
範例:
- 「我想要確保識別碼是唯一的」:僅選擇 [識別碼] 資料行。
- 「我想要確保名字、姓氏和識別碼的組合是唯一的」:選取這三個資料行。
使用 [保留第一個重複資料列] 核取方塊以指出找到重複項時要傳回的資料列:
- 若選取此選項,則會傳回第一個資料列,並捨棄其他資料列。
- 若未選取此選項,則會在結果中保留最後一個重複的資料列,並捨棄其他資料列。
如需如何處理 missinng 值的相關資訊,請參閱 技術 提示一節。
執行實驗,或按一下模組並選取 [ 執行選取]。
若要檢查結果,請以滑鼠右鍵按一下模組,選取 [ 結果資料集],然後按一下 [ 視覺化]。
提示
如果結果很難理解,或是您想要排除一些考慮的資料行,則可以使用 [資料集] 模組中的 [ 選取資料行 ] 來移除資料行。
範例
若要查看如何使用此模組的範例,請參閱 Azure AI 資源庫:
Breast 癌症偵測: 移除重複 的資料列會在加入特徵資料行之後用來合併定型和測試資料集。
電影建議:使用 移除重複 的資料列,以確保每一部影片只有一個使用者 評 等。
Twitter 情感分析: 移除重複 的資料列只會套用至識別碼和熱門程度資料行,以確保每部影片只有一個 序數排名 值。 換句話說,電影不能同時為第1和第三個,所以即使使用者以不同方式排列電影的順序,也會使用單一值。
技術說明
本節包含實作詳細資料、提示和常見問題集的解答。
實作詳細資料
此模組的運作方式是在輸入資料集的所有資料列中執行迴圈。 它會將第一次出現索引鍵資料行值唯一組合的所有資料列,收集到候選的輸出資料集。
不論資料列篩選的結果如何,都會保留資料行陣列類型。 您無法濾除無效值來強制陣列為特定的資料類型,資料行陣列類型是根據資料行中的所有值。 篩選遺漏值時,這項限制也適用。
用於比較資料值的演算法是強制雜湊。
遺漏值
輸入資料集的非索引鍵資料行和索引鍵資料行中可能會有遺漏值。 這些規則適用于遺漏值:
遺漏值在索引鍵資料行中視為有效的值。 這兩個索引鍵中可能會有遺漏值。
在疏鬆資料集中,遺漏值只有等於疏鬆值的預設表示時,才會被視為相等。
在索引鍵資料行中,一個遺漏值等同於其他遺漏值,但不等於非遺漏值。
預期的輸入
名稱 | 類型 | 說明 |
---|---|---|
資料集 | 資料表 | 輸入資料集 |
模組參數
名稱 | 範圍 | 類型 | 預設 | 描述 |
---|---|---|---|---|
索引鍵資料行選取項目篩選運算式 | 任意 | ColumnSelection | 選擇搜尋重複項目時要使用的索引鍵資料行。 | |
保留第一個重複的資料列 | 任意 | Boolean | true | 指出是否要保留一組重複項目的第一個資料列,而捨棄其他資料列。 如果為 False,則會保留遇到的最後一個重複資料列。 |
輸出
名稱 | 類型 | 說明 |
---|---|---|
結果資料集 | 資料表 | 篩選的資料集 |
例外狀況
例外狀況 | 描述 |
---|---|
錯誤 0003 | 如果一個或多個輸入資料集為 Null 或空白,則會發生例外狀況。 |
錯誤 0020 | 如果傳遞給模組的某些資料集的資料行數目太少,就會發生例外狀況。 |
錯誤 0017 | 如果一或多個指定的資料行具有目前的模組不支援的型別,就會發生例外狀況。 |
如需 Studio (傳統) 模組特定的錯誤清單,請參閱機器學習錯誤碼。
如需 API 例外狀況的清單,請參閱機器學習 REST API 錯誤碼。