このチュートリアルでは、入力データの文字列の長さを短くする必要がある場合の例を示します。 2 項ロジスティック回帰モデル、および 2 項ロジスティック回帰モデルを含む自動分類モデルの場合、文字列フィールドは最大 8 文字に制限されます。 文字列が8文字を超える場合は、Reclassifyノードを使用して再コード化することができます。
この例では、長すぎる文字列で発生する可能性のあるエラーの種類を示すために、フローの小さな部分に焦点を当て、Reclassifyノードを使用して文字列の詳細を許容できる長さに変更する方法を説明します。 この例では2項ロジスティック回帰ノードを使用していますが、Auto Classifierノードを使用して2項ロジスティック回帰モデルを生成することもできます。
チュートリアルを試す
このチュートリアルでは、以下のタスクを実行します:
モデラーのフローとデータセットのサンプル
このチュートリアルでは、サンプル・プロジェクトの「入力データの文字列長を短くする」フローを使用します。 使用したデータファイルはdrug_long_name.csvである。 次の図は、モデラーのフロー例を示しています。
タスク 1:サンプルプロジェクトを開く
サンプル・プロジェクトには、いくつかのデータ・セットとモデラー・フローのサンプルが含まれています。 サンプル・プロジェクトをまだお持ちでない場合は、チュートリアル・トピックを参照してサンプル・プロジェクトを作成してください。 次に、以下の手順でサンプルプロジェクトを開きます:
- Cloud Pak for Dataの ナビゲーションメニュー「」から、Projects > View all Projetsをc選択します。
- SPSS ModelerProjectをクリックします。
- アセット」タブをクリックすると、データセットとモデラーフローが表示されます。
進捗状況を確認する
次の図は、プロジェクトのAssetsタブを示しています。 これで、このチュートリアルに関連するサンプルモデラーフローで作業する準備ができました。
タスク 2: データ資産とデータ型ノードを調べる
入力データ文字列の長さを減らすには、いくつかのノードを含む。 以下の手順に従って、「Data AssetandType」ノードを調べます:
- Assetsタブで、Reducing Input Data String Lengthモデラーフローを開き、キャンバスがロードされるのを待つ。
- drug_long_name.csvノードをダブルクリックします。 このノードは、プロジェクト内のdrug_long_name.csvファイルを指すData Assetノードです。
- ファイル形式のプロパティを確認します。
- オプション:完全なデータセットを表示するには、データのプレビューをクリックします。
- Data Assetノードの後にあるTypeノードをダブルクリックする。 このノードは、測定レベル(フィールドが含むデータのタイプ)などのフィールド・プロパティや、モデリングにおけるターゲットまたは入力としての各フィールドの役割を指定する。 測定の尺度は、フィールドのデータの種類を示すカテゴリーです。 ソース・データ・ファイルは3つの異なる測定レベルを使用する:
- 連続フィールド('
Age
フィールドなど)は連続した数値を含む。 Drug
フィールドのような)ノミナルフィールドは、2つ以上の明確な値を持つ;この場合、'drugA
または'drugB
。- Flagフィールド('
Sex
フィールドなど)は、固有の順序を持つ複数の異なる値を持つデータを記述する(この場合、'F
、'M
)。
各フィールドについて、Typeノードは、各フィールドがモデリングで果たす役割を示す役割も指定する。 The 役割 is set to ターゲット for the field
Cholesterol_long
, which is the field that indicates whether a customer has Normal or High level of cholesterol. ターゲットは、値を予測したいフィールドである。他のフィールドの役割は Inputに設定されている。 入力フィールドは、予測フィールドと呼ばれる場合があります。モデル作成アルゴリズムは、このフィールドの値を使用して対象フィールドの値を予測します。
- 連続フィールド('
- オプション:フィルタリングされたデータセットを表示するには、データのプレビューをクリックします。
進捗状況を確認する
次の図はTypeノードを示している。 これでロジスティック・ノードを表示する準備ができました。
タスク3:値の再分類
このタスクでは、モデルを実行してエラーを発見します。以下の手順に従って、エラーを回避するために値を再分類してください:
- パレットのModelingセクションから、Logisticノードをキャンバス上にドラッグし、Data Assetノードの後にある既存のTypeノードに接続します。
- Cholesterol_longノードをダブルクリックしてプロパティを見る。
- デフォルトの多項式ではなく)二項式を選択する。
- 二項モデルは、対象フィールドが2つの離散値を持つフラグフィールドまたはノミナルフィールドである場合に使用される。
- 多項モデルは、対象フィールドが2つ以上の値を持つ名義フィールドである場合に使用される。
- 保存 をクリックします。
- Cholesterol_longノードにカーソルを合わせ、実行アイコン'をクリックする。 「
Cholesterol_long
」文字列値が長すぎることを警告するエラー・メッセージが表示されます。 この問題を解決するために、Reclassifyノードを使用して値を変換することができます。 Reclassifyノードは、カテゴリを折りたたんだり、分析のためにデータを再グループ化するのに便利です。 - Cholesterol (Reclassify)ノードをダブルクリックして、そのプロパティを見る。 Reclassifyフィールドは'
Cholesterol_long
に設定され、新しいフィールド名は'Cholesterol
である。 - 値を取得]をクリックし、[自動的に再分類]セクションを展開します。
Cholesterol_long
値を元の値の列に追加する。 - 新しい値の欄に、元のコレステロールの高値には「
High
、元のコレステロールの正常値には「Normal
」と入力する。 これらの設定は、エラーメッセージを避けるために値を短くします。
進捗状況を確認する
次の図はReclassifyノードを示しています。 これでFilterノードをチェックする準備ができました。
タスク4:フィルターノードのチェック
フィルター・ノードを確認するには、以下の手順に従ってください:
- Filterノードをダブルクリックしてプロパティを表示します。
- このノードが「
Cholesterol_long
フィールドをフィルタリングしていることに注目してほしい。
進捗状況を確認する
次の図はFilterノードを示している。 これでターゲットを定義する準備ができた。
タスク5:ターゲットの定義
Typeノードでフィールドのプロパティを指定できます。 以下の手順に従って、Typeノードでターゲットを定義する:
- Filter」ノードの後にある「Type」ノードをダブルクリックして、そのプロパティを表示します。
- データ・ソースから値を読み取り、フィールドの測定タイプを設定するには、Read valuesをクリックします。 Roleは、フィールドが機械学習プロセスのInput(予測フィールド)であるかTarget(予測フィールド)であるかをモデリング・ノードに指示する。 トレーニング、テスト、検証のためにレコードを別々のサンプルに分割するために使用されるフィールドを示すPartitionとともに、Bothと Noneも利用可能なロールである。 値の分割は、フィールドの取り得る値ごとに別々のモデルを構築することを指定する。
- Cholesterolフィールドでは、役割をTargetに設定する。
- 保存 をクリックします。
進捗状況を確認する
次の図はTypeノードを示している。 これでモデルを生成する準備が整いました。
タスク6:モデルの生成
モデル出力を表形式で表示するには、以下の手順に従ってください:
- コレステロール(ロジスティック)ノードにカーソルを合わせ、実行アイコン「」をクリックする。
- パレットのOutputsセクションから、Tableノードをキャンバス上にドラッグし、モデル・ナゲットに接続します。
- コレステロールモデルに接続されているテーブルノードにカーソルを合わせ、実行アイコン「」をクリックする。
- 出力とモデル]ペインで、[テーブル]という名前の出力結果をクリックして、テーブル出力を表示します。
進捗状況を確認する
次の画像はモデル出力を示している。
サマリー
この例では、長すぎる文字列で発生する可能性のあるエラーの種類を示し、Reclassifyノードを使用して文字列の詳細を許容できる長さに変更する方法を説明した。 この例では2項ロジスティック回帰ノードを使用していますが、Auto Classifierノードを使用して2項ロジスティック回帰モデルを生成する場合にも同様に適用できます。
次のステップ
これで、他のSPSS® Modelerチュートリアルを試す準備ができました。