機械学習

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

本記事は、下記の記事の続編として、EDAの便利ツールである「Sweetviz」を紹介する記事です。

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

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

続きを見る

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

 

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

 

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

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

 

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

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

Image for post

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

前の記事で「Pandas-profiling」を紹介したので、今回はAutovizを初めて使った私が「ここが使えそう」「良いと思った」点を紹介したいと思います。

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

 

 

1.前準備

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

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

 

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

 

 command
pip install sweetviz

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

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

 command
#pandasのインポート
import pandas as pd
#seetvizのインストール
import sweetviz as sv

STEP3:データの読み込み

今回はKaggleのtitanicで、train.csvとtest.csvを読み込んでいきます。
※後述しますが、Sweetvizの特徴を紹介するために今回はtrain.csvとtest.csvを読み込みます。

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

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

2.Sweetvizの実装

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

(1)1つのデータセット(train.csv)だけ読み込む場合

 command
#df_trainに対してSweetvizを適用
sweet_report = sv.analyze(df_train)
 
#結果をhtmlへ保存
sweet_report.show_html('sweet_report.html')

表示される画面はこちらです。

非常にわかりやすくEDAの結果が表示されています!

画面上部で全体像、その下に各カラムの統計量が算出されます

また、画面右側にFareのグラフが大きく出ていますが、これは左側の画面で「Fare」のカラムを選択しているからなので、右側に表示するカラムは自分で好きに選択することができます。

ただ、ここまでだと「Pandas-profilingとほとんど同じかな」という感想を持っていました。
※もちろん細かい違いはあります。

ただ、私が

Hawaii
Sweetvizすごいな!

と思っているポイントがあり、それは「データセット間の比較ができること」です。

早速次で見ていきましょう。

(2)2つのデータセット(train.csv/test.csv)を比較する場合

①のSTEP3の後、下記コードを実行します。

 command
#最後の引数には目的変数を指定
my_report = sv.compare([df_train, "Train"], [df_test, "Test"], "Survived")
 
#直接ブラウザに表示
my_report.show_html("Report.html")

表示される画面がこちらです。

Hawaii
・・・!

これを見て、すごく驚きました。

「Sweetvizの何がすごいの?」の詳細について、次から見ていこうと思います。

 

3.Sweetvizの便利ポイント

■便利ポイント1:データセット間で比較ができること

先ほどtrain.csvとtest.csvを比較した結果を画面でお見せしましたが、見てわかるとおり、trainデータとtestデータで、別々に情報が表示されます

これは本当に便利だと思います。trainデータとtestデータにデータの分布の偏りがあると、trainデータで訓練をしてもtestデータではうまく予測できないということが発生します。

Sweetvizを使うことで

 

2つのデータセット間に分布の偏りがないか?

 

という確認がざっくりできるので、今までSweetvizを使ったことがありませんでしたが、積極的に使っていこうと思います。

 

■便利ポイント2:処理速度が速い

前回の記事で「Pandas-profilingの少しだけ残念なポイント」を紹介しましたが、それは

 

処理に時間がかかる点

 

でした。

今回、Pandas-profilingと比較するために同じデータセットをKaggleの「Kickstarter Projects」からダウンロードし、実行してみました。

Hawaii
このデータは38万行ありますが、Pandas-profilingだと1.5時間かかっても終わりませんでしたが、Sweetvizだと約2分で終わりました

実行環境によって処理速度に差はあると思いますが、少なくとも私の環境ではかなりの差が生まれました

 

ここまでの便利ポイント1,2はPandas-profilingと比較して、Sweetvizならではのメリットを挙げてみました。

次の便利ポイント3、4は「Pandas-profilingでも挙げた」ポイントになります。

 

■便利ポイント3::各カラムのカテゴリ別の件数・欠損が一目でわかる

たった1~2行のコードで、各カラムについてこれだけ詳細に外観を掴めたらものすごく便利ですね・・・!

■便利ポイント4:カラムごとの相関係数が分かる

便利ポイント3で紹介したように例えばAgeカラムを選択すると、画面右側にこのような内容が表示されます。

Ageカラムと他のカラムの相関係数が表示されています。

こちらも非常に便利だと感じました!

ただ、強いて言うなら、Pandas-profilingの方はヒートマップで表示してくれていたので、「直感的に分かる」という観点では、Pandas-profilingの方が少し見やすいという印象です。

4.まとめ

以上、いかがでしたでしょうか。

私はSweetvizの存在を知らなかったので、今回は初めての発見が多く、非常に驚きました。

Hawaii
今回は4つの手法のうち2つ目の紹介でしたので、各手法の比較は4つ全てが終わってからまとめようと思います。次回は3つ目のAutovizについて紹介していきます。

 

以下の記事ではデータサイエンス分野でおすすめのudemy講座(Python、統計、SQL、git、docker)を紹介しているのでこちらも是非チェックしてみてください。

 

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

未経験からデータサイエンティストに転職するためのロードマップ販売中

未経験からデータサイエンティストに転職した私のノウハウを凝縮したロードマップをnoteで販売中です(1,280円)。

巷にあふれる「勉強法」だけでなく、「勉強した内容をどのように実務で実践し」「転職ではどのような点が評価されたのか」といった入手困難な情報を、「私のリアルな実体験」としてお届けしています。

わずか4日間で60名超の方に購入頂きました!

ロードマップの無料部分を見てみる

-機械学習

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