【Python】seabornで回帰モデルの表示 – Implot()

Pythonデータ分析の基礎
スポンサーリンク

Pythonの描画ライブラリseabornのグラフ描画の続きとして、回帰モデルの表示について見ていこうと思います。

といっても、回帰分析は機械学習の分野でじっくり扱う方がいいと思いますのでここでは回帰モデルの表示機能について少しだけ触れることにします。

ここでは、seabornに組み込まれている回帰モデルのlmplot()関数について見ていきましょう。

スポンサーリンク

データの準備

jupyter notebookにライブラリーをインポートしてデータの準備をしておきます。

まずはいつものようにseabornのインポートです。

import seaborn as sns
%matplotlib inline

データは今回もload_dataset()を使ってGitHub上に用意してあるデータセットを読み込んでいきます。tipsデータを使っていきます。

tips = sns.load_dataset('tips')
tips.head()

冒頭の5データを表示しておきます。

これを使って、lmplot()を見ていきましょう。

スポンサーリンク

Implot()で表示する

Implot()は線形の回帰モデルを表示します。特徴に従って表示を分割したり、着色をしたりすることができます。

Implot()

Implot()にtipsデータを読み込んでいきましょう。

sns.lmplot(x='total_bill',y='tip',data=tips)
sns.set()

x軸のtotal_bill、y軸にtipを与えています。

回帰モデルを表示すると次のようになります。

データの分布と回帰直線が表示されているのがわかります。

もう少しデータの扱いを細かくしてみます。

sns.lmplot(x='total_bill',y='tip',data=tips,hue='sex')

hueに性別を指定してカテゴリー分けをしてみました。

男女別の分布と回帰直線が表示されました。

paletteを指定して色使いを変えてみます。

sns.lmplot(x='total_bill',y='tip',data=tips,hue='sex',palette='coolwarm')

カラーリングが変りました。(ここでは、ちょっと似たような色にしてしまってあまり意味が無かったかもしれません…)

マーカーの利用

分布のマーカーとしてmarkersにリストで渡して表示します。

sns.lmplot(x='total_bill',y='tip',data=tips,hue='sex',palette='coolwarm',
           markers=['o','v'],scatter_kws={'s':100})

ここでのマーカーは丸印のo、逆三角形のvを指定しています。scatter_kwsは辞書型データで渡しますが、ここではサイズのsを100として渡しています。マーカーの四角を意味するsと同じ表記なので混乱しないようにしましょう。

scatter_kwsは、matplotlibのplt.scatter、plt.plotに辞書型で指定するオプションです。

マーカーについては他にも色々あるのでmatplotlibの公式ドキュメントを参考にしてください。

matplotlib.markers — Matplotlib 3.2.1 documentation

グリッド表示を利用

グリッド表示を利用することによって、列と行でデータを分離した表示をすることができます。colまたはrowを引数で指定するだけでグリッド表示になります。

colに性別を指定してみるとこうなります。

sns.lmplot(x='total_bill',y='tip',data=tips,col='sex')

性別で分けられたグリッド表示になりました。

次は、colとrowに時間と性別を指定して縦横のマトリクスにしてみます。

sns.lmplot(x="total_bill", y="tip", row="sex", col="time",data=tips)

今度はhueを指定してカテゴリー別の表示と絡めてみます。

colを曜日別に指定して、男女別のグラフにしてみます。

sns.lmplot(x='total_bill',y='tip',data=tips,col='day',hue='sex',palette='coolwarm')

アスペクト比とサイズの変更

seabornでアスペクト比とサイズを変更するには、パラメータを渡すことで調整できます。

上のグラフ表示を変更してみましょう。

sns.lmplot(x='total_bill',y='tip',data=tips,col='day',hue='sex',palette='coolwarm',
          aspect=0.6,height=8)

ちょっと不恰好になったかもしれませんが、サイズ、アスペクト比が変わっているのがわかります。

スポンサーリンク

最後に

Pythonの描画ライブラリseabornのグラフ描画について、ここでは回帰モデルの表示について見てきました。

回帰分析については機械学習の分野でもっと詳細に扱おうと思っているので、ここでは、seabornに組み込まれている回帰モデルのlmplot()関数を扱いました。

タイトルとURLをコピーしました