データセット内の列の選択
重要
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 (クラシック) のデータセット内の列の選択モジュールを使用して、下流の操作で使用する列のサブセットを選択する方法について説明します。 このモジュールでは、列がソース データセットから物理的に削除されることはありません。その代わりに、データベースのビューやプロジェクションのように、列のサブセットが作成されます。
このモジュールは、ダウンストリーム操作に使用できる列を制限する必要がある場合や、不要な列を削除することによってデータセットのサイズを縮小する必要がある場合に特に便利です。
データセット内の列は、元のデータと同じ順序で出力されます。指定した順序が違っても結果は同じになります。
データセット内の列の選択を使用する方法
このモジュールにはパラメーターがありません。 列セレクターを使用し、含める列か除外する列を選択します。
名前で列を選択する
このモジュールには名前で列を選択する方法が複数存在します。
フィルターと検索
[名前別] オプションをクリックします。
既に入力済みのデータセットを関連付けている場合、利用できる列が一覧表示されるはずです。 列が表示されないときは、場合によっては、アップストリーム モジュールを実行して列を一覧表示する必要があります。
一覧にフィルターを適用するには、検索ボックスに入力します。 たとえば、検索ボックスに「
w
」という文字を入力すると、一覧にフィルターが適用され、「w
」という文字を含む列の名前が表示されます。列を選択し、右矢印ボタンをクリックし、右側のウィンドウにある一覧に選択した列を移動します。
- 列名を一定の範囲で連続して選択するには、Shift キーを押しながら列名をクリックします。
- 列を個別に選択するには、Ctrl キーを押しながら列名をクリックします。
チェックマーク ボタンをクリックし、保存して終了します。
他の規則との組み合わせで名前を使用する
[WITH RULES]\(規則を使用\) オプションをクリックします。
特定のデータ型の列を表示するなど、規則を選択します。
次に、その型の列を名前で個別にクリックし、選択一覧に追加します。
列名のコンマ区切り一覧を入力するか、貼り付ける
データセットの幅が非常に広い場合は、列を個別に選択するのではなく、インデックスまたは生成された名前のリストを使用する方が簡単な場合があります。 一覧を前もって準備している場合:
- [WITH RULES]\(規則を使用\) オプションをクリックします。
- [No columns]\(列なし\) を選択し、[Include]\(含める\) を選択し、赤の感嘆符が付いているテキスト ボックスの内側をクリックします。
- 前に検証した列名のコンマ区切り一覧を貼り付けるか、入力します。 列の名前が無効な場合、モジュールを保存できません。そのため、あらかじめ名前を確認してください。
この方法を利用し、索引値で列の一覧を指定することもできます。 列インデックスを操作する方法のヒントについては、「 例 」を参照してください。
型別に選択する
[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 で データセットの列を選択 する一般的な方法について説明し、列の選択方法に関するヒントを示します。
すべての数値列に算術演算を適用できるように、データセットからテキスト列を削除します。
多くの操作では、数値列のみがデータセットに存在する必要があります。 テキストを除外し、カテゴリ列 (個別のカテゴリを表す数値) を除外することで、エラーの原因となる列を一時的に削除することができます。
[ 列セレクターの起動] をクリックします。
[ 開始] で、[ すべての列] を選択します。
[ 除外 ] オプションを選択し、[ 列の種類] を選択して、[ 文字列] を選択します。
プラス記号 (+) をクリックして、新しい条件を追加します。
[ 除外 ] オプションを選択し、[ 列の種類] を選択して、[ カテゴリ] を選択します。
特徴の選択をカテゴリ特徴列にのみ適用する必要があります。
類似した型の列を区切る必要がある場合は、複数の条件を適用できます。 たとえば、特徴にはカテゴリまたは数値を指定できますが、一部の機能選択モジュールでは数値以外のフィールドを使用できないため、最初に特徴を取得してから、条件を追加して数値の特徴だけを取得する必要があります。
[ 列セレクターの起動] をクリックします。
[ 開始] で [ 列なし] を選択します。
[ 含める ] オプションを選択し、[ すべての機能] を選択します。
プラス記号 (+) をクリックして、新しい条件を追加します。
[ 含める ] オプションを選択し、[ 列の種類] を選択して、[ カテゴリ] を選択します。
異なる数値列に別の正規化演算を適用する必要があります。
数学演算を適用する前に、整数と浮動小数点数を分離する必要がある場合があります。 これを行うには、データ型を使用し、複数の条件を適用します。
[列 セレクターの起動] をクリックします。
[ Begin With]を選択し、[ 列なし] を選択します。
[含める ] オプション を選択し、 列の種類を選択して、[数値] を 選択します。
プラス記号 (+) をクリックして、新しい条件を追加します。
[含める ] オプションを選択 し、列の種類を選択してから、ダウンストリーム操作と互換性のない数値型を選択します。
セレクターを使用して選択する列が多すぎます。
多くの場合、データセットをインポートすると、モデリングに必要ない列が多く含まれています。 ただし、後で出力したり、ケースを識別したりするために、それらを保持する必要があります。 これを行うには、[列の追加] を使用して、データセットを 2 つの部分 (メタデータとモデリングに使用される列) に分割し、後で必要に応じて列を 再組み込みします。
[列 セレクターの起動] をクリックします。
[ Begin With]を選択し、[ 列なし] を選択します。
[含める ] オプションを 選択し、 列の種類を選択して、[機能] を 選択します。
プラス記号 (+) をクリックして、新しい条件を追加します。
[含める ] オプションを 選択し、列 の種類を選択して、[ラベル] を 選択します。
これらの手順を繰り返しますが、すべての列から始め、特徴列とラベル列を除外して、メタデータのみを含むデータセットを作成します。
必要な列のインデックス値がわかりません。
データセットに少数の列がある場合は、Visualize オプションを使用して最初の 100 行を表示し、インデックス 1、2 などである列を特定できます。
列のインデックスMachine Learning 1 から始まるので、最初の列は常に 1 です。
最後の列のインデックスを取得するには、列セレクターの 2 つの列リストを確認します。AVAILABLE COLUMNS と SELECTED COLUMNS です。 列一覧の下の灰色のバーには、各リスト内の列の数が表示されます。 したがって、24 列が使用可能で、2 つの列が選択されている場合、合計 26 列が表示され、最後の列のインデックスは 26 になります。
データセットのスキーマを抽出するためのもう 1 つのオプションは、 R スクリプト の実行モジュールを使用してインデックス番号を持つ列名を取得する方法です。
Connect 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 normalized-losses 3 make
テクニカル ノート
リレーショナル データベースに精通している場合は、このモジュールによってデータのプロジェクションが作成されます。したがって、元の名前は Project列です。 データベースの用語では、プロジェクションは Transact-SQL や LINQ ステートメントなどの関数であり、表形式のデータを入力として受け取り、関連する出力を生成します。
関係代数では、プロジェクションは一連の属性名として書き込まれる 1 項演算です。 射影の結果はそれらの属性のセットとなり、その他の属性は破棄されます。
想定される入力
名前 | 型 | 説明 |
---|---|---|
データセット | データ テーブル | 入力データセット |
モジュールのパラメーター
名前 | Range | Type | Default | 説明 |
---|---|---|---|---|
Select columns | any | ColumnSelection | 射影されたデータセットで保持する列を選択します。 |
出力
名前 | 型 | 説明 |
---|---|---|
結果のデータセット | データ テーブル | 出力データセット |
例外
例外 | 説明 |
---|---|
エラー 0001 | データセットで 1 つ以上の指定した列が見つからない場合に、例外が発生します。 |
エラー 0003 | 1 つ以上の入力データセットが null または空の場合に、例外が発生します。 |
Studio (クラシック) モジュールに固有のエラーの一覧については、「エラー コードMachine Learning参照してください。
API の例外の一覧については、「エラー コードMachine Learning REST API参照してください。