相対式を使用してデータセットを分割する
重要
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 (クラシック) の [データの分割] モジュールで [相対式の分割] オプションを使用する方法について説明します。 このオプションは、数値式を使用してデータセットをトレーニングデータセットとテスト データセットに分割する必要がある場合に役立ちます。 例:
- 40 歳以上 40 歳以下
- テスト スコアが 60 以上と 60 未満
- ランク値 1 と他のすべての値
注意
適用対象: Machine Learning Studio (クラシック) のみ
類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。
データを分割するには、データ内で 1 つの数値列を選択し、各行の評価に使用する式を定義します。 相対式には、列名、値、および大なり、小なり、等しい、等しくないなどの演算子を含める必要があります。
このオプションでは、データセットが 2 つの グループに分割されます。
機械学習実験のデータ パーティション分割に関する一般的な情報については、「 データの分割 」と「 パーティション分割と分割」を参照してください。
関連タスク
データの分割モジュールのその他のオプション:
正規表現を使用してデータを分割する: 1 つのテキスト列に正規表現を適用し、結果に基づいてデータセットを分割する
[Split Recommender datasets]\(レコメンダー データセットの分割\): レコメンデーション モデルで使用されるデータセットを分割します。 データセットには、項目、ユーザー、評価の 3 つの列が必要です
相対式を使用してデータセットを分割する
Stuio の実験に データの分割 モジュールを追加し、分割するデータセットへの入力として接続します。
[Splitting mode]\(分割モード\) として、[relative expression split]\(相対表現分割\) を選択します。
[ リレーショナル式 ] テキスト ボックスに、1 つの列に対して数値比較操作を実行する式を入力します。
列には、日付/時刻データ型など、任意の数値データ型の数値が含まれています。
式では、1 つの列名の最大値を参照できます。
AND 演算にはアンパサンド文字 (&) を使用し、OR 演算にはパイプ文字 (|) を使用します。
サポートされている演算子は、
<
、>
、<=
、>=
、==
、!=
です。(
と)
を使用して、演算をグループ化することはできません。
アイデアについては、「例」セクション を 参照してください。
実験を実行するか、モジュールを右クリックして [ 選択した実行] を選択します。
式によってデータセットは 2 つの行セットに分割されます。一方は、条件と一致する値を含む行のセット、もう一方は残りのすべての行のセットです。
追加の分割操作を実行する必要がある場合は、*Split Data の 2 番目のインスタンスを追加するか、 SQL 変換の適用 モジュールを使用して CASE ステートメントを定義します。
相対式の例
次の例では、データの分割モジュールの [相対式 ] オプションを使用してデータセットを 分割 する方法を示します。
暦年の使用
一般的なシナリオは、データセットを年で分割することです。 次の式を使うと、列 Year
の値が 2010
より大きいすべての行が選択されます。
\"Year" > 2010
日付式は、データ列に含まれるすべての日付部分を考慮する必要があり、データ列の日付の形式は一貫している必要があります。
たとえば、 形式 mmddyyyy
を使用する日付列では、式は次のようになります。
\"Date" > 1/1/2010
列インデックスの使用
次の式は、列インデックスを使用して、データセットの最初の列から 30 以下の値 (20 を除く) を含むすべての列を選択する方法を示しています。
(\0)<=30 & !=20
複数の分割を使用した時間値に対する複合演算
ログ データのテーブルを、実行に時間のかかるクエリのグループに分割するとします。 列 の次の相対式を使用して、 Elapsed
1 分以上実行されたクエリを取得できます。
\"Elapsed" >00:01:00
応答時間が 1 分未満で 30 秒を超えるクエリを取得するには、右側の出力に Split Data の別のインスタンスを追加し、次のような式を使用します。
\"Elapsed" <:00:01:00 & >00:00:30
日付値でデータセットを分割する
次の相対式は、 列 の日付値を使用してデータセットを分割します dt1
。
\"dt1" > 10-08-2015
日付が 10-08-2015 より大きい行は、最初の (左) 出力データセットに追加されます。
日付が 10-08-2015 以前の行は、2 番目 (右) の出力データセットに追加されます。
テクニカル ノート
このセクションには、実装の詳細、ヒント、よく寄せられる質問への回答が含まれています。
制限
データセットの相対式には、次の制限が適用されます。
- 相対式は、数値データ型と日付/時刻データ型にのみ適用できます。
- 相対表現が参照できる列名は最大で 1 つです。
- AND 操作にはアンパサンド文字 (&)、OR 操作にはパイプ文字 (|) を使用します。
- 相対式には、 の演算子を
<
>=
>
<=
==
使用できます。!=
- かっこを使用したグループ化操作はサポートされていません。