データセット内の列の選択

データセットの列を演算に含むか除外するかを選択します

カテゴリ: データ変換/操作

注意

適用対象: Machine Learning Studio (クラシック)

このコンテンツは、Studio (クラシック) のみに関連しています。 Azure Machine Learning デザイナーに同様のドラッグアンドドロップモジュールが追加されました。 この記事では、2つのバージョンの比較について詳しく説明します。

モジュールの概要

この記事では、Azure Machine Learning Studio (クラシック) の データセット内の列の選択 モジュールを使用して、下流の操作で使用する列のサブセットを選択する方法について説明します。 このモジュールでは、列がソース データセットから物理的に削除されることはありません。その代わりに、データベースの ビュープロジェクション のように、列のサブセットが作成されます。

このモジュールは、ダウンストリーム操作に使用できる列を制限する必要がある場合や、不要な列を削除することによってデータセットのサイズを縮小する必要がある場合に特に便利です。

データセット内の列は、元のデータと同じ順序で出力されます。指定した順序が違っても結果は同じになります。

データセット内の列の選択を使用する方法

このモジュールにはパラメーターがありません。 列セレクターを使用し、含める列か除外する列を選択します。

名前で列を選択する

このモジュールには名前で列を選択する方法が複数存在します。

  • フィルターと検索

    [名前別] オプションをクリックします。

    既に入力済みのデータセットを関連付けている場合、利用できる列が一覧表示されるはずです。 列が表示されないときは、場合によっては、アップストリーム モジュールを実行して列を一覧表示する必要があります。

    一覧にフィルターを適用するには、検索ボックスに入力します。 たとえば、検索ボックスに「w」という文字を入力すると、一覧にフィルターが適用され、「w」という文字を含む列の名前が表示されます。

    列を選択し、右矢印ボタンをクリックし、右側のウィンドウにある一覧に選択した列を移動します。

    • 列名を一定の範囲で連続して選択するには、Shift キーを押しながら列名をクリックします
    • 列を個別に選択するには、Ctrl キーを押しながら列名をクリックします

    チェックマーク ボタンをクリックし、保存して終了します。

  • 他の規則との組み合わせで名前を使用する

    [WITH RULES](規則を使用) オプションをクリックします。

    特定のデータ型の列を表示するなど、規則を選択します。

    次に、その型の列を名前で個別にクリックし、選択一覧に追加します。

  • 列名のコンマ区切り一覧を入力するか、貼り付ける

    データセットの幅が非常に広い場合は、列を個別に選択するのではなく、インデックスまたは生成された名前のリストを使用する方が簡単な場合があります。 一覧を前もって準備している場合:

    1. [WITH RULES](規則を使用) オプションをクリックします。
    2. [No columns](列なし) を選択し、[Include](含める) を選択し、赤の感嘆符が付いているテキスト ボックスの内側をクリックします。
    3. 前に検証した列名のコンマ区切り一覧を貼り付けるか、入力します。 列の名前が無効な場合、モジュールを保存できません。そのため、あらかじめ名前を確認してください。

    この方法を利用し、索引値で列の一覧を指定することもできます。 列インデックスを操作する方法のヒントについては、「 」を参照してください。

型別に選択する

[WITH RULES](規則を使用) オプションを使用する場合、列の選択に複数の条件を適用できます。 たとえば、数値データ型のフィーチャー列のみを取得したりできます。

BEGIN from オプションは、開始点を決定し、結果を理解するために非常に重要です。

  • [すべての列] オプションを選択した場合、すべての列が一覧に追加されます。 その後、[除外] オプションを使用し、特定の条件を満たさない列を 削除 する必要があります。

    たとえば、最初にすべての列を選択し、それから名前や型に基づいて列を削除します。

  • [NO COLUMNS](列なし) オプションを選択した場合、列の一覧は空の状態から始まります。 その後、条件を指定し、列を一覧に 追加 します。

    複数の規則を適用する場合、各条件は 付加 されます。 たとえば、列なしから始め、数値列をすべて取得する規則を追加します。 自動車の価格のデータセットで、結果的に 16 の列が追加されます。 次に、符号をクリックし + て新しい条件を追加し、[ すべての機能を含める] を選択します。 結果的に得られるデータセットにはすべての数値列が含まれ、さらに文字列のフィーチャー列など、すべてのフィーチャー列が含まれます。

列の索引別に選択する

列の索引は、元のデータセットにおける列の順序を指します。

  • 列には 1 から始まる連続番号が付けられます。
  • ある範囲の列を得るには、ハイフンを使用します。
  • 1--3 のように、始まりや終わりを指定しないことは許可されません。
  • 索引値 (または列名) の重複は許可されません。エラーを起こす可能性があります。

たとえば、データセットに少なくとも 8 つの列が含まれる場合、次のいずれかを貼り付けることで、連続しない複数の列を返すことができます。

  • 8,1-4,6
  • 1,3-8
  • 1,3-6,4

最後のサンプルはエラーになりませんが、列 4 というインスタンスが 1 つ返されます。

列インデックスの操作に関するその他のヒントについては、「 」のセクションを参照してください。

列の順序を変更する

[Allow duplicates and preserve column order in selection](選択で重複を許可し、列の順序を維持する) オプションの場合、空の一覧から始まり、ユーザーが名前または索引で指定した列が追加されます。 常に列を "自然な順序" で返す他のオプションとは異なり、このオプションでは、ユーザーが指定またはリストアップした順序で列が出力されます。

たとえば、Col1、Col2、Col3、Col4 という列が含まれるデータセットでは、次のいずれかを指定することで、列の順序を逆にし、列 2 を除外できます。

  • Col4, Col3, Col1
  • 4,3,1

データセット内の列の選択を使用する方法の例については、モデルギャラリーの次のサンプル実験を参照してください。

列の選択に関する一般的なシナリオ

次の例では、ユーザーが machine learning で データセットの列を選択 する一般的な方法について説明し、列の選択方法に関するヒントを示します。

  • すべての数値列に算術演算を適用できるように、データセットからテキスト列を削除します。

    多くの操作では、数値列のみがデータセットに存在する必要があります。 テキストを除外し、カテゴリ列 (個別のカテゴリを表す数値) を除外することで、エラーの原因となる列を一時的に削除することができます。

    1. [ 列セレクターの起動] をクリックします。

    2. [ 開始] で、[ すべての列] を選択します。

    3. [ 除外 ] オプションを選択し、[ 列の種類] を選択して、[ 文字列] を選択します。

    4. プラス記号 (+) をクリックして、新しい条件を追加します。

    5. [ 除外 ] オプションを選択し、[ 列の種類] を選択して、[ カテゴリ] を選択します。

  • 特徴の選択をカテゴリ特徴列にのみ適用する必要があります。

    類似した型の列を区切る必要がある場合は、複数の条件を適用できます。 たとえば、特徴にはカテゴリまたは数値を指定できますが、一部の機能選択モジュールでは数値以外のフィールドを使用できないため、最初に特徴を取得してから、条件を追加して数値の特徴だけを取得する必要があります。

    1. [ 列セレクターの起動] をクリックします。

    2. [ 開始] で [ 列なし] を選択します。

    3. [ 含める ] オプションを選択し、[ すべての機能] を選択します。

    4. プラス記号 (+) をクリックして、新しい条件を追加します。

    5. [ 含める ] オプションを選択し、[ 列の種類] を選択して、[ カテゴリ] を選択します。

  • 異なる数値列に異なる正規化操作を適用する必要があります。

    数学的演算を適用する前に、浮動小数点数から整数を分離することが必要になる場合があります。 これを行うには、データ型を使用して複数の条件を適用します。

    1. [ 列セレクターの起動] をクリックします。

    2. [ 開始] で [ 列なし] を選択します。

    3. [ 含める ] オプションを選択し、[ 列の型] を選択して、[ 数値] を選択します。

    4. プラス記号 (+) をクリックして、新しい条件を追加します。

    5. [ 含める ] オプションを選択し、[ 列の型] を選択して、ダウンストリーム操作と互換性のない数値型を選択します。

  • セレクターを使用して選択できる列が多すぎます。

    多くの場合、データセットをインポートすると、モデリングに必要のない多数の列が含まれていることがわかります。 ただし、後で、またはケースを識別するために、出力用に保存することをお勧めします。 これを行うには、 列の追加を使用して、データセットを2つの部分 (モデリングに使用されるメタデータと列) に分割し、必要に応じて後で再結合列に分割します。

    1. [ 列セレクターの起動] をクリックします。

    2. [ 開始] で [ 列なし] を選択します。

    3. [ 含める ] オプションを選択し、[ 列の種類] を選択して、[ 機能] を選択します。

    4. プラス記号 (+) をクリックして、新しい条件を追加します。

    5. [ 含める ] オプションを選択し、[ 列の種類] を選択して、[ ラベル] を選択します。

    6. これらの手順を繰り返しますが、すべての列から開始し、特徴列とラベル列を除外して、メタデータのみのデータセットを作成します。

  • 必要な列のインデックス値がわかりません。

    データセット内にいくつかの列がある場合は、[ 視覚化 ] オプションを使用して最初の100行を表示し、インデックス1、2などの列を確認できます。

    • Azure Machine Learning のインデックスは1から始まります。したがって、最初の列は常に1になります。

    • 最後の列のインデックスを取得するには、[使用できる列] と [選択した列] の2つの列の一覧を確認します。 列の一覧の下にある灰色のバーには、各リストの列の数が表示されます。 したがって、24個の列があり、2つの列が選択されている場合は、合計26列で、最終的な列のインデックスは26です。

    データセットのスキーマを抽出するもう1つのオプションは、 R スクリプトの実行 モジュールを使用して、インデックス番号を持つ列名を取得することです。

    1. データセットを R スクリプトの実行 モジュールに接続します。

    2. モジュールで、次のようなスクリプトを入力して、列名を出力します。 で始まる行では、 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

テクニカル ノート

リレーショナルデータベースに精通している場合、このモジュールはデータの 射影 を作成します。 そのため、元の名前である プロジェクト列 があります。 データベース用語では、射影は Transact-sql や LINQ ステートメントなどの関数で、データを入力として表形式で受け取り、関連する出力を生成します。

関係代数では、射影は単項演算で、属性名のセットとして書き込まれます。 射影の結果はそれらの属性のセットとなり、その他の属性は破棄されます。

想定される入力

名前 Type 説明
データセット データ テーブル 入力データセット

モジュールのパラメーター

名前 Range Type Default 説明
Select columns any ColumnSelection 射影されたデータセットで保持する列を選択します。

出力

名前 Type 説明
結果のデータセット データ テーブル 出力データセット

例外

例外 説明
エラー 0001 データセットで 1 つ以上の指定した列が見つからない場合に、例外が発生します。
エラー 0003 1 つ以上の入力データセットが null または空の場合に、例外が発生します。

Studio (クラシック) モジュール固有のエラーの一覧については、「 Machine Learning エラーコード」を参照してください。

API 例外の一覧については、「 Machine Learning REST API のエラーコード」を参照してください。

関連項目

操作