筋肉で解決しないために。

日々出会うモノに対する考察をしたり、主に以下のテーマに関して書いています。 データサイエンス/人工知能/AI/機械学習/DeepLearning/Python//数学/統計学/統計処理

seaborn入門2_「回帰とプロット」

こんにちは、ワタルです。

さっと見て、「あぁそうだったそうだった」と確認できるハンドブックのような存在を目指して。

searborn入門第2回目、「回帰とプロット」です。

はじめに

このエントリでは、seabornのサンプルデータを用いて様々な回帰曲線を描く手法について学びます。 以下の関数を学習することができます。

tips = sns.load_dataset("tips")(サンプルデータの取得)
sns.lmplot("x","y",dataframe)(単回帰曲線の可視化)
sns.lmplot("x","y",dataframe,
                   scatter_kws={'marker':'o', 'color':'indianred'},
                   line_kws={'linewidth':1, 'color':'blue'})(様々な引数)
fig, (axis1,axis2) = plt.subplots(1,2,sharey =True)(複数のグラフを同時にプロットする)

おまじない

import numpy as np
from numpy.random import randn
import pandas as pd

from scipy import stats

import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns

%matplotlib inline

サンプルデータの取得

#Seabornにサンプルデータがあります。
tips = sns.load_dataset("tips")

または、Githubから取得することもできます。

csvの場合は、pd.read_csv("tips.csv")で読み込むことができます。

取得したdataframeを表示します。

tips.head()

>>>
  total_bill tip sex smoker day time sise
0  16.99  1.01   Female  No  Sun Dinner  2
1  10.34  1.66   Male    No  Sun Dinner  3
2  21.01  3.50   Male    No  Sun Dinner  3
3  23.68  3.31   Male    No  Sun Dinner  2
4  24.59  3.61   Female  No  Sun Dinner  4

seaborn.lmplot("x","y",dataframe)(単回帰曲線の可視化)

seabornを用いることで、簡単に単回帰曲線を可視化することができます。

sns.lmplot("total_bill","tip",tips)

>>>

f:id:watarumon:20180702165335p:plain

グラフの様々な引数

プロット点や線の色などを指定することもできます。

sns.lmplot("total_bill","tip",tips,
                   scatter_kws={'marker':'o', 'color':'indianred'},
                   line_kws={'linewidth':1, 'color':'blue'})
>>>

f:id:watarumon:20180702165347p:plain

引数order(多項式回帰の可視化)

seabornでは、多項式回帰も簡単に描くことが出来ます。

sns.lmplot("total_bill", "tip", tips, order=4,
           scatter_kws={"marker": "o", "color": "indianred"},
           line_kws={"linewidth": 1, "color": "blue"})

f:id:watarumon:20180702165357p:plain

引数fit_reg(散布図の可視化)

fit_reg=Falseを指定することで、散布図のみを描画することができます。

sns.lmplot("total_bill", "tip", tips,fit_reg=False)

>>>

f:id:watarumon:20180702165409p:plain

離散的な値の散布図の可視化

lmplotでは、離散的な値でも問題なく可視化することができます。

#チップの割合を表す、tip_pectを計算した後、描画します

tips["tip_pect"]=100*(tips['tip']/tips['total_bill'])
sns.lmplot("size", "tip_pect", tips)

>>>

f:id:watarumon:20180702165423p:plain

引数x_estimator(特定の推定量とその回帰を可視化)

引数x_estimatorでは、x 軸の各値に指定された関数を実行し、その返り値をプロットします。 そのプロットに対する回帰を可視化することができます。

#関数に平均を指定してみます
sns.lmplot("size", "tip_pect", tips, x_estimator=np.mean);

>>>

f:id:watarumon:20180702165437p:plain

引数hue(色合いを変える)

hueとは、色合い/色調という意味の英単語で、hueを指定することで、うまく色分けして可視化することができます。

sns.lmplot("total_bill", "tip_pect", tips, hue="sex",markers=["x","o"])

>>>

f:id:watarumon:20180702165449p:plain

グラフの分割表示

複数のグラフを同時に表示することも簡単にできます。 subplots( )の第一引数はグラフの行数を、第二引数はグラフの列数をあらわしています。

fig, (axis1,axis2) = plt.subplots(1,2,sharey =True)

sns.regplot("total_bill","tip_pect",tips,ax=axis1)
sns.violinplot(y='tip_pect', x='size', data=tips.sort('size') ,ax=axis2)

f:id:watarumon:20180702165600p:plain

今回は、seabornのサンプルデータを用いて様々な回帰曲線を中心としたデータ可視化手法について学びました。

お疲れ様でした! 次回はこちら

watarumon.hatenablog.com

それじゃー、また。