機械学習

【機械学習】EDAのための便利ツールを試してみる_D-Tale

本記事は、下記3つの記事の続きの最終回として、EDAの便利ツールである「dtale」を紹介する記事です。

【機械学習】EDAのための便利ツールを試してみる_Pandas-profiling

Kaggleや機械学習を始めて、EDA(Exploratory Data Analysis)のやり方に苦戦する方も多いのではないでしょうか。 EDAは簡単に言うとデータ全体の傾向を掴み、「どんな説明変 ...

続きを見る

【Sweetviz】機械学習EDAの便利ツールをPythonで試してみる

本記事は、下記の記事の続編として、EDAの便利ツールである「Sweetviz」を紹介する記事です。 Kaggleや機械学習を始めて、EDA(Exploratory Data Analysis)のやり方 ...

続きを見る

【Autoviz】機械学習EDAの便利ツールをPythonで試してみる

本記事は、下記2つの記事の続編として、EDAの便利ツールである「Autoviz」を紹介する記事です。 Kaggleや機械学習を始めて、EDA(Exploratory Data Analysis)のやり ...

続きを見る

Kaggleや機械学習を始めて、EDA(Exploratory Data Analysis)のやり方に苦戦する方も多いのではないでしょうか。

EDAは簡単に言うとデータ全体の傾向を掴み、「どんな説明変数が使えそうか」「何か意味のある説明変数を作れそうか」と言ったことを考える、非常に重要な工程です

でも、1つ1つのコードを実行してその結果をどこかに控えておくのも地味に大変だなあ・・

と常日頃思っておりました。

そんな中、先日下記の記事を拝見しました。

4 Libraries that can perform EDA in one line of python code

Image for post

様々なEDAをコード数行で一気に行ってくれるツール4選を紹介しています

前の記事で「Pandas-profiling」「Sweetviz」「Autoviz」を紹介し、本日は最終回として「D-Tale」をKaggleのtitanicを使って試したので、「ここが使えそう」「良いと思った」という点を紹介したいと思います。

結論から述べますと、

こんなすごいツールあったんだ!!!」「逆に便利すぎて使いこなせるか不安!!

という感想を持ちました。

このツールを自在に使いこなせるようになったら、最初のEDAでそこまで困ることがなくなる日も近いかもしれません。

本記事の目次は以下の通りです。

①前準備

②dtaleの実装

③dtaleでできること

(1)縦軸(行)のメニュー

(2)横軸(列)のメニュー

④最終回まとめ

Pandas-profiling、Sweetviz、Autoviz、d-taleでどれが使いやすいと感じたか?

⑤まとめ

①前準備

STEP1:コマンドプロンプトでpip installしておく

記事にあるとおり、下記のコマンドでdtaleをpipインストールしておきます。

※初心者の方に念のため補足ですが、下記コマンドはjupyter notebookではなく、「cmd」とPCで検索をしてコマンドプロンプトを起動するか、やっていることはほぼ同じですがanacondaをインストールしている場合は「Anaconda Prompt」を起動しても良いです。

STEP2:jupyter notebookで必要な内容をインポートしておく

jupyter notebookを立ち上げ、下記をインポートしておきます。

 command
#pandasのインポート
import pandas as pd
#dtaleのインストール
import dtale

STEP3:データの読み込み

Kaggleのtitanicで、train.csvを読み込んでいきます。

 command
df_train = pd.read_csv("train.csv")

ここまでできたら準備完了です、早速便利ツールを使っていきましょう!

②dtaleの実装

では、早速やっていきましょう。

 command
dtale.show(df_train)

この1行の記述だけです!

すると、jupyter notebook上に下記のように表示されます。

最初に私がこれを見た時、「???」という感想でした。

え、これって、単純にtrain.csvをPandas形式で表示しただけじゃないの・・?

そんな風に感じました。

ところがこのdtale、とんでもなくたくさん機能を持っているのです

dtaleについて扱っている日本語の記事は私が検索したところ見当たらなかったので(2020年10月13日現在)、

最終回の本記事は、前の3つのツールのように「便利ポイント」だけをかいつまむのではなく、なるべく1つ1つの機能を自分が使ってみた画面をお見せしながら解説していこうと思います

③dtaleでできること

(1)縦軸(行)のメニュー

1.全体の見方

まずは全体の見方からです。

先ほどの出力されたデータフレームの左上を見ると、赤枠のように数値が書かれています。

これは行数とカラム数で、今回で言うと891行×12カラムという意味です。

また、赤枠内の「▶」を押すと、下記のようにメニュー画面が表示されます。

このメニューバーを見た時に、「あ、ただのデータフレームじゃなくてなんか色々できるのかも」と思いました

それでは、このメニューバーの1つずつについて、見ていきましょう!

2.Convert to XArray

Convert to XArrayを選択すると、下記の様な画面が表示され、カラムごとにXArrayに変換することができます。
ただ、これより先にも同様の点が出てきますが、このツール上で型変換をする必要はあまりないのかな、と感じます。

3.Describe

Describeボタンを押すと、別のwebブラウザが立ち上がり、このような画面が表示されます。

私はこのDescribeが一番使い勝手よく、便利だなと感じました!

■青枠

カラム別のDataTypeが表示されます。

■オレンジ枠

左半分で選択したカラムの統計量・箱ひげ図が表示されます。こちらも大変見やすいです。

■緑枠

「Uniques」「Outliers」の2つのボタンで切り替えができます。
お見せしているキャプチャはUniquesで、ユニーク値とそのカウントが()で表示されています。

ちなみにOutliersに切り替えると下記のように、外れ値が表示されます。

4.Custom Filter

Custom Filterはその名の通り、フィルタ機能があります。

下記の画面が別ブラウザで立ち上がるので、ここでは例として「30歳以上の男性」を条件に入れました。

※少し見づらいですが、左側のボックスに「(Sex == "male") and (Age >= 30)」と記入しています。

右下のapplyを押すと、最初のデータフレームが更新されます。

■青枠

先ほど指定した条件が表示されています。

■緑枠

指定したとおり、30歳以上の男性が表示されています。

青枠の「×」を押すと元のデータフレームに戻ります。

こういう条件の人たちってどんな特徴があるんだろう?」とデータを眺めてみるのにちょうどいいと感じます。

5.Build Columns

カラムを新規で作ることができます。

上記では、「New_columns」という列名を設定し、「String型」で、組み合わせるカラムは「EmbarkedとPclass」に設定します。

※カラムは手打ちではなく、プルダウンで選択可能です。

Join Characterはデフォルトで「_」が入っているので、このままでいいと思います。

※試しに変えようとしましたが、変更できませんでした。

こちらを実行すると、下記のように、一番右に「New_columns」ができあがっています!

ただ、実際の特徴量作成をこの画面でやるのはあまり現実的ではないと思うので、実際には「このカラムを組み合わせた時のデータの外観を見たい」と思った時に使うのかなと感じました。

※これ自体は素晴らしい機能だと思うのですが、いまいち良い使い道がないなと思っています。

また、今回は新しく作るカラムを「String」にしたので今回のような設定画面になりましたが、他の型を選択すると少し選択する内容も変わりましたので、適宜試してみてください。

6.Summarize Data

なんとなく名前から想像もつくかもしれないです。

今回はPivotを選んでピボットテーブルを作って見ようと思います。

RowsをPclassColumnsをSurviedValueをAgeにして実行してみます。

すると下記の様な画面がjupyter上に表示されます。

Pclass別・Survied別の平均年齢を見ることができます

7.Duplicates

おそらく重複した列があれば削除できる機能だと思うのですが、今回のデータにそういった状況がなかったので、試せておりません。

Duplicatesを押すと下記の様な画面が表示されます。

ただ、この有効な使い道がいまいちピンと来ていないのが正直なところです。

8.Correlations

こちらも名前から想像がつくと思いますが、相関係数を表示してくれます。

ヒートマップのように表示されるので、非常に見やすいですね!

カラムが非常に多い場合は、画面上部でカラムの指定もできます。

9.Charts

これは、非常に高性能だなと感じました。

冒頭で私が、「使いこなせるかわからないと思った」と言った理由の1つがこのChartsです。

ちょっと見づらいと思うのですが、以下のように画面上で設定しています。

・データ可視化の種類(ここではScatterという散布図)

・X軸(ここではAge)

・Y軸(ここではFare)

・Group(ここではSurvied)に

そうすると、下記のようにSurvied別に色分けされた散布図が表示されます

散布図の1つ1つの●にカーソルを合わせるとx軸とY軸の値も表示されたりするので、非常に便利だと感じます。

Scatterくらいは扱いやすいと思うのですが、3D Scatter等は、是非皆さんも使ってみてください。

なんかかっこいい」のですが、これを使いこなせる気は今の私にはまだしないな、と思いました。
※カーソルでグラフをクリックして動かすと本当に図が回転したりするので、試しに使ってみることをお勧めします!

10.Heat Map

こちらは8のCorrelationsとは異なり、列別にヒートマップが表示されます。

見たところ、デフォルトの設定では小さい数値が赤、数値が大きくなるにつれて黄色→緑になるようです

Pclassが分かりやすいですが、1は赤、2は黄色、3は緑になっていますね。

同様に、Ageも小さい数値が赤、大きくなるにつれて黄色→緑になっていると思います。

ただ、これはあまり良い使い道が思い浮かんでいないです。

特にデータ数が多いと、すべての行をスクロールするのも煩雑なので、そこまで使わない機能かなと感じました。

11.Highlight Dtypes

その名の通り、データフレームの中からDtypesの列をハイライトしてくれます。

12.Highlight Missing

こちらもその名の通り、欠損値をハイライトしてくれます。

欠損がある列に印もついていますね

この機能は、ざっくりと「めちゃくちゃ欠損がありそうか」「欠損のカラムが多いレコードに何か特徴がないか」といった外観を掴むことに有効だと感じました。

13.Highlight Outliers

こちらも、外れ値をハイライトしてくれます。

外れ値自体は3のDescribeで見れるので、この機能はあまり使わなくてもいいかもしれないな、というのが感想です。

14.Highlight Range

ハイライト関連の最後の項目です。ここでは自分で自由に範囲を決められます。

上記のように、「Ageが6より大きい」という設定にすると、以下のようにハイライトされます。

 

15.Low Variance Flag

今回は当てはまる列がありませんでしたが、カーソルを合わせると下記の説明が表示されます。

分散が小さい列に印を本来はつけてくれるようで、具体的な判定は下記の2つの条件ともにTrueになるときです。

・Count of unique values / columns size < 10%

・Count of most common value / Count of second most common value > 20

こちらも、あまり使い道がわからないな、というのが率直な感想です。

16.その他

「Instances」「Code Export」「Export」「Upload CSV」「Refresh Widths」「About」「Reload Data」「Open in New Tab」「Shut down」は、データ分析という観点では直接的なメニューではないことと、直感的に何ができるか名前からわかりやすいので、具体的な紹介は今回は控えます。

(2)横軸(列)のメニュー

横軸は、(1)よりも直感的にわかりやすいです。

各カラムについて、カーソルを合わせるとこのようなメニューが表示されます。

1.Lock

Lockすると、選んだカラムが一番左に寄ります。

下記は、Name列をLockした場合です。元々は一番左の列はPassengerIDでしたが、Nameが左に来たことが分かります。

2.Type Conversion

その名の通り、型変換です。

例えば、文字列の数値を下記のようにFloat型に変換したりすることができます。

ただ、この画面上で機械学習を回したりするわけではないと思うので、あまり型変換は使う必要はないのかなと感じました。

3.Describe

試したところ、(1)の3.Describeと全く同じ画面が表示されました。

4.Column Analysis

こちらを押すと、カラム別のグラフが表示されます。

直感的に情報を掴みやすく、わかりやすいですね!

5.Formats

データをFormat(成形)できるようです。

Age列のFormatを押すと下記の様な画面になります。

・Precisionは「精度」のような意味だと思いますが、こちらで小数点の桁数を指定できます。(要はどこまで細かく表示しますか?の様な指定だと思います)

・Thousands Separatorは1000区切りで「,」を入れてくれると思われます。

・Abbreviateは「略」の意味なので、試してみましたがおそらく「2000」が「2k」と表示されるということだと思います。

・Exponentは「e」表記ですね。

・BPSは調べたところ「Bit Per Seconds」の略でした。

・Red Negativesは負の値を赤く表示してくれるようです。

・一番最後は、nan(欠損)を「-」で表記するか「nan」で表記するかプルダウンで選択できました。

結構色々調べましたが、正直、「これ、すごい機能だけど使うかな・・・?」と思いました

d-taleは私はこういう感想がやや多いですね。

6.Variance Report

(1)の15.Low Variance Flagの各カラムの情報がここと同義になると思います。

下記はPclassのVariance Reportです。

左上に、(1)15で示された2つのルールが書かれていて、それぞれがTrueかFalseか書かれています。

7.その他

今回紹介しなかった「Hide」「Delete」「Rename」「Replacements」は名前から機能が推察できるので、紹介は控えます。

④最終回まとめ

さて、長かった便利ツール紹介もいよいよ最後です。

今回も含めて全4回、ツール(Pandas-profiling、Sweetviz、Autoviz、d-tale)を紹介してきました。

私の独断と偏見で、何をどう使うと便利か?を決めていきたいと思います!

■結論

こちらです!

「SweetvizとAutovizを併用する」

さて、理由を説明していきます。下記、あくまで私の個人的な感想です。

Pandas-profilingとSweetviz

まず、Pandas-profilingとSweetvizが比較的この4つのツールの中では立ち位置が似ていると感じました。

その上で、「処理速度の違い」「2つのデータセットを比較できる」メリットから、Sweetvizを利用する方が私にはメリットが大きいと感じました。

※Sweetvizのメリットについてはこちらをご覧ください。

【Sweetviz】機械学習EDAの便利ツールをPythonで試してみる

本記事は、下記の記事の続編として、EDAの便利ツールである「Sweetviz」を紹介する記事です。 Kaggleや機械学習を始めて、EDA(Exploratory Data Analysis)のやり方 ...

続きを見る

d-tale

次にd-taleです。正直、機能の細やかさ・充実度は圧倒的にd-taleが4つのツールの中で優れていると感じました。

ただ、本記事でも度々書きましたが、「すごいけどこれって本当にこれ使うの?」という機能も私にとっては多かったです。

宝の持ち腐れともいうのでしょうか・・今の自分には使いこなせないような気がしたこともあり、d-taleは選びませんでした。

ただ、これを使いこなせるようになれば、データへの理解もだいぶ変わってくる気がしました。

Autoviz

最後にAutovizです。

これだけ、他のツールとは毛色が違います。

可視化に特化しているため、Sweetvizで表現できていないグラフがあれば参考程度に見る、という使い方が良い気がしました。

※正直、Autovizも使わなくてもいいと思いましたが非常に簡単に実装できるため、初手としてざっと外観を見ておくには非常に有効だと感じます。

以上の理由から、「SweetvizとAutovizを併用する」使い方がベストなのでは、と考えています。

■最後に

2つ、思っていることがあるので紹介します。

1点目:今回紹介したツールだけでデータへの理解が完結することは難しい

あくまで、「誰でも/直感的に使いやすい」ツールなので、「このカラムのこういう数値を可視化したい」という細かなデータ分析は、自身でコーディングする必要があるなと思っています。

2点目:ツールにこだわりすぎて本質を見失わないことが重要

特に最後に紹介したd-taleは機能が盛りだくさんなので、「d-taleを眺めている」だけで時間があっという間に過ぎていきます。

ただ、本来の目的はデータを分析した上で、「次の一手を打つ」ことのはずです

このデータ分析に時間を必要以上に取られすぎないようにする必要があると感じました。

⑤まとめ

いかがでしたでしょうか。

今までは自分で1つ1つ思いついた内容を可視化していたので、notebookもすごく汚くなっていました。

しかし、これらのツールをうまく使いこなせば「効果的に・効率的に」データ分析を行い、より良い一手を打てると感じています

最後までお読みいただきありがとうございました。

-機械学習

© 2023 データサイエンス はじめの一歩 Powered by AFFINGER5