/Python/seabornで行列散布図!ペアプロット方法と設定2019.11.10Python/seabornで行列散布図!ペアプロット方法と設定Tweet行列散布図(ペアプロット)は大量の変数間の関係を一望できるため大変有用なデータ可視化手法です。表計算ソフトやPythonのmatplotlibを使ってペアプロットを作成するには思いのほか膨大な労力を要します。ここではseabornというライブラリを使い、わずか数行でペアプロットを描画する方法を紹介します。wat(@watlablog)です。まとめseabornでカッコいいグラフを描画することができるseabornとは?seabornとは、Python用のデータ可視化ライブラリのことです。データ可視化ライブラリというと、当WATLABブログではすっかりおなじみのmatplotlibがありますが、seabornはmatplotlibの機能を利用したライブラリでもあります。matplotlibではちょっと手こずるカッコいいグラフを描きたい!という方にオススメできるライブラリです。似たようなデータ可視化ライブラリには「Python/pyqtgraphのインストールとサンプル起動方法」で紹介したpyqtgraphもありましたね。あるけど、使い分けはどうしたら良いの?これは個人的な意見になってしまいますが、pyqtgraphは高速処理が秀でていてリアルタイムソリューションに適している感覚があります。seabornは単なる可視化に留まらず、統計処理が得意であるため機械学習等をはじめとしたデータサイエンスの分野に適していると感じています。得意・不得意はあり、どちらかだけを使えば良いということは無いので、「これから作るプログラムの要件に適しているのは?」という観点で常にライブラリの選択をすることが必要でしょう。それでは、早速インストールしてみましょう!pipでインストールする方法インストールはpipで実施します。pipの使い方とコマンド集」という記事をご確認下さい。僕と同じWindowsであれば以下のコードをコマンドプロンプトに打ち込んで実行することでインストールが完了します。seabornちなみに、僕はAnaconda等を使っていません。僕のPC環境や開発環境は「Python入門!初心者がインストールから学習開始するまでの3ステップ」という記事に詳細を書きましたので必要に応じてご参照下さい。seabornはmatplotlibも必要ですので、上のコマンドでseabornをmatplotlibと置き換えてmatplotlibもインストールしておいて下さい。行列散布図(ペアプロット)の使い所と見方この記事では行列散布図(ペアプロット)の描き方を説明します。このペアプロットはなぜ、どういう場面で使われているのかの紹介と図の見方について説明をします。手っ取り早くコードが見たい方は記事の後半までスクロールしてみて下さい!ペアプロットを使う理由と事例ペアプロットとは、大量の変数列があるデータに対し、全ての変数の組み合わせ毎に相関関係を見るためのプロットです。2つの変数の相関関係は、通常横軸と縦軸に1つずつ変数軸をとり、散布図として値をプロットしていくことで確認できます(相関係数\(R\)とか\(R^{2}\)で評価する時に使う図です)。今回紹介するペアプロットとは、和名で行列散布図という名称がついていることからわかるように散布図を行列として縦と横に並べた図を意味します。することで、変数が何個もある場合に一目で全変数の相関関係が一望できる図になり、多くの人がペアプロットを使う最大の理由でもあります。百聞は一見にしかず、ということでまずはペアプロットの例を見てみましょう。以下はこれからサンプルとして扱うscikit-learnに収録されているIrisデータセットのペアプロット結果です。キレイだ!...それっぽくて(?)プロットしただけで満足してしまいがちですが、芸術作品を作ったわけではないので、グラフの見方を説明していきます。以下に、上記のペアプロット上にそれぞれの意味を重ね書きした説明図を作成してみました。D0~D3というのは、データ変数の数です。後程詳しくデータセットの中身を見てみますが、1列目のデータがD0、2列目がD1...という意味です。行列の縦と横はそれぞれのデータ変数が順番に並んでおり、ペアプロットとしては対角線上にヒストグラム、その他の位置に散布図が配置されています。散布図の見方ですが、例えば行列の横D3、縦D1がクロスする位置にある散布図は、横軸にD3データ配列をとり縦軸にD1のデータ配列をとった図になっています。このようにペアプロットは各変数の横軸と縦軸を全ての組み合わせで散布図をとっていることが特徴です。横D0と縦D0等、同じ変数がクロスする所は散布図をプロットさせる意味がないのでデータのばらつき具合を一望できるヒストグラムになっているというわけです。今回使用するのは、「Irisデータセット」というアヤメの品種に関する実測データです。このデータはscikit-learnという機械学習ライブラリをインストールすると同時に手に入るので、自分でリストデータを作成する必要はありません。scikit-learnというライブラリのインストール方法は「Python機械学習!scikit-learnインストールと例題」に記載しましたので、是非ご確認下さい。Irisデータセットの中身を以下の図に示します。3が変数(アヤメの花びらの各寸法要素)、縦に0~149と150個並んでいるのが寸法値を意味しています。このようなデータを用意することでペアプロットを描画することが出来ます。全コード以下がseabornで複数変数を持つデータのペアプロットを描画する全Pythonコードです。グラフを閉じるscikit-learnのデータセットを読み込むscikit-learnのデータセットは「datasets.load_〇〇()」で呼び出すことが出来ます。今回は〇〇にIrisを入れてアヤメのデータセットを呼び出しています。Pandasのデータフレーム構造が必要import文でPandasをインポートしていますが、seabornで扱うデータはPandasというライブラリのデータフレーム構造にしておく必要があります。Pandasも忘れずにインストールとインポートをしておきましょう。pandas」でインストール可能です。Pandasデータフレーム構造へは、「pd.DataFrame()」という文で実行しています。再掲しますが、プログラムを実行すると以下の図が画面に表示されます。最低限知っておきたいseaborn見た目の設定ここまでの内容で、seabornを使ったペアプロットの方法は理解できたのではないかと思います。そのままの可視化結果ではまだデータの解釈をするにあたり不十分な場合があります。ここではseabornを使ったデータ分析でよく使う最低限の見た目に関する設定を紹介します。データ種類別に色を分ける以下のコードは、データを種類毎に色分けするコードです。実はscikit-learnのIrisデータセットにはtargetという部分にアヤメの種類に関する情報が入っています。「df['species']=iris.target」でその情報を「species(種類)」という列として5列目に追加しています。2という値が入っているだけなので、その次の行はPythonの内包表記を使って0をsatosa、1をversicolor、2をvirginicaというようにstring型として名称を与えています。virginicaはそれぞれアヤメの品種です。hue='species')」とペアプロットの引数を1つ増やしています。以下が実行で得られるペアプロット図です。データの種類がわかっている場合は色分けすることでかなり見やすくなりますね。グラフサイズを変更する次にグラフ全体のサイズ調整方法を紹介します。ペアプロット図というのは大量の変数を扱うとグラフサイズが非常に大きくなります。seabornのデフォルト設定でペアプロットを作成すると、変数の数が多ければ多いほどグラフも大きくなります。手持ちのディスプレイに収まらない!というケースは往々にしてありますので、サイズ調整は最低限知っておきたい設定です。以下は上記コードのグラフ描画部分に「fig.set」として「figheight」と「figwidth」でそれぞれ高さと幅サイズを追加したコードです。グラフを閉じるこのコードのfigheightとfigwidthの値を変更して実行することで、以下のようにグラフ全体のサイズを変えることが出来ます。「軸名等が重なっていても良いからざっくり全体を見たい!」って時はまずこの設定でコンパクトにして眺めてみるのも良いですね。表示するデータ変数を任意に指定する最後はプロットするデータ変数を指定する方法を紹介します。膨大なデータのうち「ある変数とある変数のみの相関関係が知りたい!全部は見たくない!」という場合はデータ表示の種類を絞ることで解決します。以下のコードはpairplotの引数に「vers」という引数を設定し、表示させる変数を指定しています。グラフを閉じる以下の図が実行結果です。1]」と指定していますが、「vers=[1,3]」のようにも指定することが可能で、値は連続している必要がありません。データフレーム自体を加工しなくても、着目変数だけを分析できるので覚えておいて損はない設定と思います。まとめ本記事では、seabornと行列散布図(ペアプロット)の概要を説明し、プロットの見方を図解によって説明しました。ペアプロットは大量の変数データの関係性を一望する手法として非常に有用であり、近年のビッグデータ活用の強力な可視化ツールであると言えます。表計算ソフト等の手作業でペアプロットを作成するのはかなりの手間ですが、seabornを使えばわずか数行で作成することができることがわかりました。デフォルトの設定だけだと使い勝手が悪い部分として色分け、サイズ変更、表示数変更を紹介しました。これらの設定を適切な場面で使い分ければデータサイエンスの分野で迅速な問題解決ができると思います。行列散布図SNSでもご購読できます。技術系の職に就き日々実験やシミュレーションを使う仕事をしています。このブログでは初心者が科学技術プログラムを作れるようになることを目標に、学習結果を記録していきます。*メールアドレス(公開はされません。*次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。