(この記事は2023年6月に執筆されたものです)
1:はじめに
Dataikuではデータ整形から可視化、分析、機械学習まで一つのプラットフォーム上で完結することができます。
本記事ではDataikuを使用してKaggleでおなじみのTitanicのデータ整形に挑戦してみようと思います。
Dataikuでは様々なデータ整形処理を行うことができますが、今回は以下の処理について試してみました。
欠損値の補完
文字と数字の分離
カラムの削除
one-hot表現
カラムの移動
2:データの準備とプロジェクトの作成
本記事ではKaggleのコンペで使われているTitanicのデータを使用し、Dataiku上でデータ整形してみます。
Titanicとは20世紀初頭に存在した豪華客船で、1912年に氷山と衝突し沈没しました。レオナルド・ディカプリオが出演した映画の舞台にもなった船でもあります。
KaggleのコンペではTitanicに乗船した乗客のデータ(乗客ID、生死の有無、性別、年齢etc)があり、このデータのもとでどのような人たちがこのTitanicの沈没から生き残れたか予測するものとなっています。
このTitanicのデータは以下のページから得られます。(今回はDataのタブから得られるtrain.csvを使用します)
最初にTitanicのデータの中身について説明します。Titanicのデータの中身は次の図のようになってます。
PassengerId 乗客ID
Survived 死亡=0、生存=1
Pclass チケットの階級(1=1st,2=2nd,3=3th)
Name 乗客名
Sex 性別
Age 年齢
SibSp 同乗していた兄弟や配偶者の数
Parch 同乗していた親や子の数
Ticket チケット番号
Fare 旅客運賃
Cabin キャビンの番号
Embarked 出港地(C=Cherbourg,S=Southampton,Q=Queenstown)
Projectを作成しファイルをアップロードする
データ整形に入る前にDataiku上で作業をするための場所であるプロジェクトというものを作成します。
NEW PROJECTをクリックすると以下のようなタブが出てきます。
Blank projectをクリックし、プロジェクトを作成します。
プロジェクト名を入力し(今回はtitanic)CREATEをクリックするとプロジェクトのページができます。
IMPORT YOUR FIRST DATASETをクリックしデータセットをアップロードします。
今回はTitanicのtrain.csvをアップロードします。
IMPORT YOUR FIRST DATASETをクリックするとデータセットを入力するNew datasetというページに移ります。
Uploads your files からデータセットをアップロードします。
Uploads your filesからtrain.csvをアップロードするとtrain.csvのプレビューページが出てきます。
CREATEをクリックすると下記のような画面に変わります。
緑色のバーは列の推測される値と一致している値の割合。
灰色のバーは欠損値の割合。
赤色のバーは列の推測される値と一致していない値の割合です。
3.データ整形
欠損値の補完
次にデータの整形をしてみます。
はじめに欠損値の補完をします。Ageのカラムをみると欠損値があります。機械学習や分析の際に障害になるのでカラムごと取り除くか値を補完しましょう。
ここでは欠損値を平均値で補完しようと思います。(今回は簡単のため欠損値を平均値で補完しています。実際に分析に使用する場合には推奨されません)
カラム名の横に三角のボタンがあるのでカーソルを合わせると下記のようなタブが出現します。
Fill empty rows with…を選択し欠損値を補完します。今回はAverageを選択します。
すると欠損値が平均値で補完されます。
補完前
補完後(四捨五入している)
欠損値のあった場所が平均値で埋まり、バーの色もすべて緑色になったので欠損値すべてが平均値で補完されたことになります。
文字と数字の分離
次にTicketのカラムを処理しようと思います。
Ticketは数字だけのデータと文字と数字が混じったデータも混在しているので今回は数字だけのカラムを作ろうと思います。
画面左にADD A NEW STEPというものがあり細かなデータの整形処理はここでやることにします。
ADD A NEW STEPでSplit columnを選択すると次のようなタブが出現します。
Columnで分けたいカラムを選択しDelimiterで区切りたい文字を選択します。
今回は空白で区切りたいのでキーボードのスペースを押すだけです。Starting fromはEndにしておきます。
これで空白を境に数字と文字が分かれました。
Ticket_0には赤色のバーが少し残っています。
新しくできたカラムにはまだ「LINE」という文字が残っていますので、今回は0に変換します。
ADD A NEW STEPからFind and Replaceを選択し、対象となるカラムTicket_0を選択します。
ADD REPLACEMENTS を選択し下記の画像のように入力すると、LINEから0へ変換することができます。
カラムの削除
Cabinは欠損値が多いので今回はカラムごと削除します。
Cabinの隣にある矢印からDeleteを選択するとカラムごと消せます。
カテゴリカル変数の変換
次にカテゴリカル変数をone-hot表現に変換したいと思います。one-hot表現は自然言語を0,1のみを用いてベクトルで表現する方法です。
例えば今回だとMale,Femaleのカテゴリカル変数をMale→(1,0) Female→(0,1)とベクトルで表現できます。今回のデータセットはPclass,Sex,Embarkedがカテゴリカル変数になっています。
ADD A NEW STEPからUnfoldを選択します。Columnにone-hot表現にしたいカラムを選択します。
結果は以下のようになります。
出力された結果は1のみであらわされており、0は欠損値になっていますからこのままだとone-hot表現にならないので欠損値を0で埋めます。
こうすることでone-hot表現を実装することができました。
Pclass,Embarkedも同様にできます。
カラムの移動
Pclassをone-hot表現で表すと次のようになります。
Pclass_1,Pclass_2,Pclass_3という順にデータを見たいのでカラムを移動させようと思います。
ADD A NEW STEPからMove columnsを選択します。
Columnに動かしたいカラム名を入力し、New positonで動し方を決めます。
今回はPclass_2の次にPclass_3が来てほしいのでNew position はAfter another columnを選択し、Other columnにPclass_2を選択します。
結果は以下のようになります。
Embarkedもone-hot表現に変換後、同様の操作をするとカラムの順番を変えることができます。
一連のデータ整形をすると次のようになります。
ここまでノーコードでデータ整形をすることができました。
4.まとめ
今回はDataikuを使ってKaggleのTitanicのデータ整形に挑戦しました。
プログラミングコードを使用することなく、データ整形をすることができました。
普段、データとにらめっこしながらコードを作成しデータ整形するよりもはるかに効率よく処理ができたと実感しています。
整形したデータを使って次はTitanicの生存者予測に挑戦してみようと思います。