COMPANY

PAGE TOP

BLOG

Hadley Wickhamの「Tidy Data」をRapidMinerでやってみる(パート3)

If you would like to read this post in English, it’s here.


こんにちは。またお越しいただきありがとうございます。前回の投稿では、De-Pivotオペレータを使用して、ハドリーウィッカムが提唱した「整理されていない」データの5つの例の中の一つ目の問題を解決する方法について詳しく解説しました。今回は、2つ目の問題について説明していきます。今回のプロセスの最初のステップでは、前回の投稿のようにDe-Pivotオペレータを使用しますが、データを完全に「整理された」ものにするためにもう少し余分な作業が必要になります。

 

[問題2] 複数の変数が一つの列に保存されている

 

最初の投稿のように、今回のチュートリアルで用いるデータセットは、オリジナルのタイタニックデータから著者が意図的に作成しました。 「整理されていない」このリンクをクリックするとファイルをダウンロードできます)データと、 「整理された」データがあります。

Click to Open

では、「整理されていない」データを整理していきましょう。

Click to Open

上記のように、プロセスの最初の部分は以前の投稿と同じようにDe-Pivotオペレータを使用します。これについての詳細な説明は、パート1、パート2の投稿を参照してください。今回は、Split、Rename、Reorder Attributesオペレータを使って、残りのプロセスを進めていきます。

 

まず、Splitオペレータについて説明していきます。Splitオペレータには6つのパラメータがありますが、今回のチュートリアルでは以下の4つのパラメータのみ使用します。

 

  • attribute filter type

  • attribute

  • split pattern

  • split mode

Click to Open

4つのパラメータそれぞれに、数個のオプションがあります。”attribute filter type”、”attribute”、”split mode”は下矢印を押下するとオプションが開きます。”attribute filter type”は、1つの列しか選択する必要がないため、”single”を選択します。”attribute”は、Sex_Ageが”De-Pivot”オペレータで作成された列の名前のため、Sex_Ageを選択します。”split mode”には、 “ordered_split”と “unordered_split”という2つのオプションがあります。”ordered_split”オプションは、値を別々の列に分割するが、元の値は所定の位置に保持するというものです。そのため、今回の場合はこれを選択します。 “unordered_split”オプションは、現在の値をヘッダ行に移動し、ブール値をその場所に入れるものです(下記参照)。最後に、”split pattern”には正規表現で入力し、補足された文字を基準に文字列を分割します。今回は、AgeとSexで別々の列を作成したいため、アンダースコア “_”を入力します。

Click to Open

次に、Renameオペレータを使います。 データがSplitオペレータから出てきた後、Splitで作成された新しい列には「Sex_Age_1」と「Sex_Age_2」という名前が付けられます(下記参照)。 これらの列名は値と一致していないため、列名を変更します。

Click to Open

Renameオペレータには、2つのメインパラメータと1つのサブパラメータがあります。

  • old name

  • new name

  • rename additional attributes

Click to Open

“old name”には、名前を変更したい列名(変更前)を入力し、”new name”には、新たに付与する列名(変更後)を入力します。追加で名前を変更したい列がある場合は、[Edit List]ボタンをクリックして、各追加列の “old name”と “new name”の値を入力します。今回は、一つだけ追加します。

Click to Open

Renameオペレータからデータが出力されると、名前が変更されましたが、列順が元とは違います。Countは最後にあるはずですが、PassengerClassのすぐ隣にあります。

Click to Open

列順を適切な順番にするには、Reorder Attributesオペレータを使います。ここで使用したパラメータは、”sort mode”と”attribute ordering”です。”sort mode”には、3つのオプション(”user specified”、”alphabetically”、”reference data”)があります。 今回は、指定したい順番はアルファベット順でもなく、それを参照するデータもないため、”user specified”(ユーザ指定)を選択します。次に、”attribute ordering”をクリックして、以下のウィンドウを開きます。 現在の列はすべて”Attribute”リストの左側に表示されます。 左の”Attribute”リストの項目を右の”Attribute Ordering”リストに移動するには、希望の列をクリックして選択し、「右矢印」ボタンをクリックします。適切な順番で移動しなかった場合は、画面右側にある上下の矢印ボタンを使用して順序を入れ替えてください。

Click to Open

Click to Open

ここまで、

[問題2] 「複数の変数が一つの列に保存されている」

場合の解決方法を説明してきました。以下に、今回のプロセスを簡単にまとめます。まず、De-Pivotオペレータを使用して、「整理されていない」データを「整然された」形にしました。次に、Splitオペレータを用いて、結合された属性の列を2つの列に分割しました。 最後に、Reorder Attributesオペレータを用いて、適切な順番に列を並び替えました。

次回は、再度問題2を扱いますが、より複雑な例を用いて、Split、Renameオペレータとは異なるオペレータを使用します。

 

それではまた!

 

$$ \begin{aligned} \newcommand\argmin{\mathop{\rm arg~min}\limits} \boldsymbol{\beta}_{\text{ridge}} & = \argmin_{\boldsymbol{\beta} \in \mathcal{R^p}} \biggl[ ||\boldsymbol{y}-\boldsymbol{X\beta}||^2 + \lambda ||\boldsymbol{\beta}||^2 \biggr] \\ & = (\boldsymbol{X}^T\boldsymbol{X} + \lambda\boldsymbol{I_{p+1}})^{-1}\boldsymbol{X}^T\boldsymbol{y} \end{aligned} $$
PAGE TOP