重複する行の削除
重要
Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。
2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。
- ML Studio (クラシック) から Azure Machine Learning への機械学習プロジェクトの移動に関する情報を参照してください。
- Azure Machine Learning についての詳細を参照してください。
ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。
データセットから重複行を削除します
カテゴリ: データ変換/操作
注意
適用対象: Machine Learning Studio (クラシック) のみ
類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。
モジュールの概要
この記事では、Machine Learning Studio (クラシック) の [重複する行の削除] モジュールを使用して、データセットから重複の可能性を削除する方法について説明します。
たとえば、次のようにデータがあり、患者の複数のレコードを表しているとします。
PatientID | イニシャル | 性別 | Age | 受付 |
---|---|---|---|---|
1 | F.M. | M | 53 | 1 月 |
2 | F.A.M. | M | 53 | 1 月 |
3 | F.A.M. | M | 24 | 1 月 |
3 | F.M. | M | 24 | 2 月 |
4 | F.M. | M | 23 | 2 月 |
F.M. | M | 23 | ||
5 | F.A.M. | M | 53 |
明らかに、この例には重複する可能性のあるデータを含む複数の列があります。 実際に重複しているかどうかは、データに関するユーザーの知識によって異なります。
たとえば、多くの患者が同じ名前であることを知っているかもしれません。 重複の除去には、名前の列は使用せず、ID 列のみを使用します。 そうすることで、患者の名前が同じであるかどうかにかかわらず、重複する ID 値を備える行のみが除外されます。
または、[ID] フィールドで重複を許可し、ファイルの他の組み合わせを使用して、名、名、年齢、性別などの一意のレコードを検索することもできます。
行が重複しているかどうかの基準を設定するには、キーとして使用する単一の列または列のセットを指定します。 2 つの行は、すべてのキー列の値が等しい場合にのみ、重複していると見なされます。
モジュールを実行すると、候補のデータセットが作成され、指定した列のセット全体で重複がない行のセットが返されます。
重要
ソース データセットは変更されません。このモジュールでは、指定した基準に基づいて、重複を除外するようにフィルター処理された新しいデータセットが作成されます。
Remove Duplicate Rows の使用方法
実験にモジュールを追加します。 Remove Duplicate Rows (重複行の削除) モジュールは、[データ変換]、[操作] にあります。
重複する行をチェックするデータセットを接続します。
[プロパティ] ウィンドウの [Key column selection filter expression]\(キー列の選択フィルター式\) で、[Launch column selector]\(列セレクターの起動\) をクリックして、重複の識別に使用する列を選択します。
このコンテキストで、キーは一意の識別子を意味しません。 列セレクターを使用して選択したすべての列が、キー列として指定されます。 選択されていない列はすべて非キー列と見なされます。 キーとして選択した列の組み合わせによって、レコードの一意性が決定されます (複数の等値結合SQLステートメントと考えてください)。
例 :
- "ID が一意であることを確認する": ID 列だけを選択します。
- "名、姓、および ID の組み合わせが一意であることを確認したい": 3 つの列すべてを選択します。
重複が見つかったときに返す行を指定するには、[Retain first duplicate row]\(最初の重複行を保持\) チェック ボックスをオンにします。
- オンにすると、最初の行が返され、他の行は破棄されます。
- このオプションをオフにした場合は、最後の重複する行が結果で保持され、他の行は破棄されます。
missinng 値の 処理方法については、「テクニカル ノート」セクションを参照してください。
実験を実行するか、モジュールをクリックして [選択したファイル を実行] を選択します。
結果を確認するには、モジュールを右クリックし、[Results dataset]\(結果のデータセット\) を選択してから [可視化] をクリックします。
ヒント
結果を解釈するのが難しい場合、またはいくつかの列を考慮から除外したい場合は、Select Columns in Dataset (データセット内の列の選択) モジュールを使用して列を削除できます。
例
このモジュールの使用例については、次の記事を Azure AI Gallery。
がんの検出: 重複する行 の削除は、特徴列を追加した後にトレーニング データセットとテスト データセットを統合するために使用されます。
映画に関する推奨事項: [重複 する行の削除] を使用して、映画ごとにユーザー評価が 1 つのみ確保 されます。
Twitter 感情分析: [重複する行の削除] は ID 列と人気列にのみ適用され、映画ごとに序数ランク付け値が 1 つしか表示されません。 つまり、映画を 1 つ目と 3 つ目の両方にすることはできません。そのため、ユーザーが映画の順位を異にした場合でも、1 つの値が使用されます。
テクニカル ノート
このセクションには、実装の詳細、ヒント、よく寄せられる質問への回答が含まれています。
実装の詳細
モジュールは、入力データセットのすべての行をループ処理することによって機能します。 これは、キー列の値の一意の組み合わせが初めて表示されるすべての行を候補出力データセットに収集します。
列の配列型は、行のフィルター処理の結果とは別に保持されます。 フィルター処理で無効な値を除外して、配列を特定のデータ型にすることはできません。列の配列型は、列内のすべての値に基づきます。 この制限は、欠損値をフィルター処理する場合にも適用されます。
データ値の比較に使用されるアルゴリズムは、ハッシュ強制です。
不足している値
非キー列とキー列に入力データセットの値が不足している可能性があります。 これらの規則は、欠損値に適用されます。
欠損値は、キー列で有効な値と見なされます。 両方のキーに欠損値が存在する可能性があります。
スパース データセットでは、欠損値はスパース値の既定の表現と等しい場合にのみ、等しいと見なされます。
キー列では、欠損値はその他の欠損値と等しいが、非欠損値とは等しくないと見なされます。
想定される入力
Name | 型 | 説明 |
---|---|---|
データセット | データ テーブル | 入力データセット |
モジュールのパラメーター
名前 | Range | Type | Default | 説明 |
---|---|---|---|---|
キー列選択のフィルター式 | any | ColumnSelection | 重複データの検索時に使用するキー列を選択します。 | |
最初の重複行を保持 | any | Boolean | true | 一連の重複行の最初の行を保持して他の行を破棄するかどうかを示します。 False の場合は、最後に現れた重複行が保持されます。 |
出力
名前 | 型 | 説明 |
---|---|---|
結果のデータセット | データ テーブル | フィルター処理されたデータセット |
例外
例外 | 説明 |
---|---|
エラー 0003 | 1 つ以上の入力データセットが null または空の場合、例外が発生します。 |
エラー 0020 | モジュールに渡された一部のデータセットの列数が少なすぎる場合に、例外が発生します。 |
エラー 0017 | 指定した 1 つまたは複数の列に、現在のモジュールでサポートされていない型がある場合、例外が発生します。 |
Studio (クラシック) モジュールに固有のエラーの一覧については、「エラー コードMachine Learning参照してください。
API の例外の一覧については、「エラー コードMachine Learning REST API参照してください。