ほとんどの場合、モデルのビルドとテストに必要なデータを準備して前処理する必要があります。 準備されたデータは、モデル開発のビジネス要件に基づいて処理されます。 このトピックでは、Machine Learning Platform for AI (PAI) でデータを準備して前処理する方法について説明します。 この例では、PAIによって提供される公開データが使用される。
前提条件
パイプラインが作成されます。 詳細については、「データの準備」をご参照ください。
手順1: パイプライン設定ページに移動します
PAIコンソール にログインします。左側のナビゲーションウィンドウで、[ワークスペース] をクリックします。 [ワークスペース] ページで、表示するワークスペースの名前をクリックします。
ワークスペースページの左側のナビゲーションウィンドウで、 機械学習デザイナーページに移動します。
[Visualized Modeling (Designer)] ページで、作成したパイプラインを選択し、開く.
ステップ2: データを準備する
この例では、心臓病の症例に関するPAIによって提供される公開データが使用される。 [テーブルの読み取り] コンポーネントを使用すると、テーブルを作成したり、テーブルにデータを書き込んだりすることなく、パブリックデータを読み取ることができます。
ほとんどの場合、データを開発するときに、MaxComputeまたはObject Storage Service (OSS) でテーブルを準備する必要があります。 次に、[テーブルの読み取り] 、[テーブルの書き込み] 、[ファイルデータの読み取り] などのデータソース /ターゲットコンポーネントを使用して、テーブルにデータを照会または書き込みする必要があります。 詳細については、「Component reference: data sourceまたはdestination」のトピックをご参照ください。
左側のコンポーネントリストで、検索ボックスにキーワードを入力して、テーブルを読むコンポーネントを使用します。
[テーブルの読み取り] コンポーネントを右側のキャンバスにドラッグします。 Read Table-1という名前のパイプラインノードが自動的に生成されます。
[Read Table-1] コンポーネントをクリックします。 キャンバスの右側のウィンドウにある [テーブルの選択] タブで、[テーブル名] パラメーターを
pai_online_project.heart_disease_prediction
に設定します。 これにより、心臓病の症例に関する公開データを読み取ることができます。キャンバスの右側のウィンドウにある [フィールド情報] タブをクリックして、パブリックデータの列の詳細を表示することもできます。
ステップ3: データの前処理
この例では、心臓病症例に関する公開データが生データとして使用され、生データのすべてのフィールド値が前処理の間に正規化される。 フィールド値を正規化するには、次の手順を実行します。
SQL文を使用して、生データ内のすべての非数値フィールドを数値フィールドに変換します。 これにより、前処理後のすべてのフィールドが数値フィールドになります。
列のデータをDouble型に変換します。 これにより、データが正規化の要件を満たすことが保証されます。
テーブルのすべての列の値を正規化します。
次のセクションでは、操作について説明します。
非数値フィールドを数値フィールドに変換します。
左側のコンポーネントリストで、検索ボックスにキーワードを入力して、SQLスクリプトコンポーネントを使用します。
SQL Scriptコンポーネントを右側のキャンバスにドラッグします。 SQL Script-1という名前のパイプラインノードが自動的に生成されます。
[Read Table-1] ノードからSQL Script-1ノードのt1入力ポートに線を引きます。 これにより、SQL Script-1ノードのt1入力ポートが、Read Table-1ノードの下流ノードとして設定されます。
SQL Script-1ノードを選択します。 右側のウィンドウの [パラメーターの設定] タブで、t1が [入力ソース] フィールドに自動的に入力されます。 次に、SQLスクリプトコードエディターに次のSQLコードを入力します。
select age, (case sex when 'male' then 1 else 0 end) as sex, (case cp when 'angina' then 0 when 'notang' then 1 else 2 end) as cp, trestbps, chol, (case fbs when 'true' then 1 else 0 end) as fbs, (case restecg when 'norm' then 0 when 'abn' then 1 else 2 end) as restecg, thalach, (case exang when 'true' then 1 else 0 end) as exang, oldpeak, (case slop when 'up' then 0 when 'flat' then 1 else 2 end) as slop, ca, (case thal when 'norm' then 0 when 'fix' then 1 else 2 end) as thal, (case status when 'sick' then 1 else 0 end) as ifHealth from ${t1};
説明SQL Script -1ノードには、t1、t2、t3、t4の4つの入力ポートがあります。 上記のサンプルコードでは、${t1} はt1が使用されていることを示します。 別の入力ポートを使用する場合、SQL Script-1ノードの [パラメーター設定] タブの [入力ソース] フィールドにポート名が自動的に入力されます。 この場合、上記のコードでポートを変更する必要があります。
キャンバスの上部にある [実行] アイコンのをクリックします。 Read Table-1ノードとSQL Script-1ノードは順番に実行されます。
すべての列のデータをDouble型に変換します。
左側のコンポーネントリストで、検索ボックスにキーワードを入力して、データ型の変換コンポーネントを使用します。
[データ型変換] コンポーネントを右側のキャンバスにドラッグします。 Data Type Conversion-1という名前のパイプラインノードが自動的に生成されます。
SQLスクリプト-1ノードからデータ型変換-1への線を引く
キャンバスで [データ型変換-1] コンポーネントをクリックします。 右側のウィンドウの [フィールド設定] タブで、[ダブルタイプの列に変換] セクションの [フィールドの選択] をクリックし、すべての列を選択して、列内のデータを [ダブルタイプに変換します。
フィールド値を正規化します。
左側のコンポーネントリストで、検索ボックスにキーワードを入力して、正規化コンポーネントを使用します。
正規化コンポーネントを右側のキャンバスにドラッグします。 Normalization-1という名前のパイプラインノードが自動的に生成されます。
データ型変換-1ノードから正規化-1への線を引く
キャンバスでNormalization-1コンポーネントをクリックします。 右側のウィンドウの [フィールドの設定] タブで、すべての列を選択します。
左側のコンポーネントリストで、検索ボックスにキーワードを入力して、分割コンポーネントを検索します。 [分割] コンポーネントを右側のキャンバスにドラッグします。 Normalization-1ノードから生成されるSplit-1ノードに線を引きます。
デフォルトでは、Splitコンポーネントは、生データをモデルトレーニングセットとモデル予測セットに4:1の比率で分割します。 比率を変更するには、[分割] コンポーネントをクリックし、[パラメーター設定] タブで [分割率] パラメーターを設定します。
キャンバスの上部ツールバーで、保存をクリックします。
手順4: パイプラインのデバッグと実行
キャンバス上で [データ型変換-1] コンポーネントを右クリックし、[ここから実行] を選択してパイプラインを実行します。 システムは、パイプライン内のコンポーネントを順番に実行します。 ノードが期待どおりに実行されると、ノードボックスにアイコンが表示されます。 期待どおりに実行されているノードを右クリックし、[データの表示] を選択して、出力データが正しいかどうかを確認できます。
パイプラインが複雑な場合は、パイプラインにノードを追加するたびにパイプラインを保存して実行できます。 ノードの実行に失敗した場合は、ノードを右クリックし、[ログの表示] を選択して障害のトラブルシューティングを行います。
次のステップ
データを前処理した後、データを視覚化する必要があります。 詳細については、「データ可視化」をご参照ください。