HiPlotで多次元の学習データを一気に可視化してみた

HiPlotで多次元の学習データを一気に可視化してみた

Mediumのtowards data scienceでこんな面白い記事を見かけました。


「Facebook社が公開しているHiPlotというライブラリで学習データを可視化してみた」という記事です。
HiPlotライブラリはもともと、NNベースのモデルのハイパーパラメータを可視化するためのツールですが、それを学習データの可視化に応用してみたんだとか。
※ちなみに自分はHiPlotを使ったことがありませんでしたが、、

上の記事ではirisデータセットで試していたので、今回はBoston Housing(ボストンの住宅価格)で試してみます。
コードはGitHubにあげています。

環境

本記事で紹介しているコードはDockerコンテナ上での動作を想定しています。
なお、Dockerコンテナではなくても以下のライブラリをインストール済みであれば動作するはずです。
※依存ライブラリについてはGitHubのpyproject.tomlやpoetry.lockを確認してください。

  • Python==”3.7′
  • hiplot==0.1.22′
  • sklearen==’0.22.1′
  • pandas==’0.25.3′

なお、HiPlotはpip install hiplotでインストールできます。

データ準備

まず、以下のようにsklearnのデータセットであるBoston Housingを読み込みます

import hiplot as hip
import pandas as pd
from sklearn.datasets import load_boston

data = load_boston()

boston = pd.concat(
    [
        pd.DataFrame(data.target, columns=['target']),
        pd.DataFrame(data['data'], columns=data.feature_names)
    ],
    axis=1
)

HiPlotで可視化

可視化したいデータをpandas.DataFrameに変換後、以下を実行します。

hip.Experiment.from_dataframe(boston).display()

画像だと分かりにくいので、gifにしてみました。

ターゲット変数の検索範囲を下に移動させていくと、各特徴量との繋がりが徐々に変化することが分かります。
確かに、HiPlotを使うとターゲット変数がどの特徴量と関係しているのかを目でわかりやすいかもしれません。