見出し画像

Python初心者 無料で学習を極める(6)

「機械学習のためのpython入門講座」SkillupAI様のday6目の講座から学んだことを記載していきます☆
本記事は、「あ!どんなふうにあれ使うっけ?」っと言うときに参考にしてもらえると嬉しいです。一通りpythonに慣れてきたら、実際のプログラムを載せるなどして皆さんと一緒にレベルアップができればと思います!

それでは6日目行ってみましょう!
day6:データの可視化 seaborn

Seabornの強み

高度なグラフ描写が可能で、機械学習ではカテゴリ毎に分布を比較することが頻繁にあります

Seabornを使う前の準備

「pip freeze」コマンドを用いて、自分の環境にseabornがインストールされているか、確認をしましょう。されている場合は、問題無し。していない場合は、「pip install seaborn」 でインストールを実施する

Seabornを使ってみよう

■棒グラフ(coutplot)

Matplotlibでも活用した棒グラフ。しかし、seabornの場合は、データ数を自動で数えて勝手に棒グラフ化ができてしまいます。

#seaborn の場合 (スマート~)
import seaborn as sns
sns.coutplot(tips.day)

#matplotlibの場合
left = range(4)
day = tips.day.value_counts().keys()
height = tips.day.value_counts().values
plt.bar(left, height,tick_label = day)

■棒グラフ(barplot() )

意味:カテゴリー毎に平均値を見たい
表現:各棒グラフに値のばらつき(標準偏差)を表現される

#各曜日における支払い総額の平均値をプロット
sns.barplot(tips.day,tips.total_bill)
plt.show()

画像1

■ヒストグラム(distplot() )

意味:個数に合わせて、縦軸は割合(%表記)で見せたい
表現:ヒストグラム+ヒストグラムを滑らかにした曲線を重ねて見せる

#kde = false と指定すると曲線を描画しない
#hist = false と指定すると、ヒストグラムを描画しない
sns.distplot(tips.total_bill , bins =20 )

画像2

■線形回帰プロット(regplot())

意味:散布図に線形回帰の直線を表したい
表現:データの傾向を反映した直線(線形回帰)を阿波s手表現
かつ 95%の信頼区間(直線の確信度)が自動で描画される

#scatter = false にすると 散布図が消える
#fit_reg = false にすると直線が消える
#sns.regplot ( X データ 、Yデータ ) とする 
sns.regplot (tips.total_bill, tips.tip )

画像3

seaborn を複数描写

matplot のsubplotと同様に、複数のグラフを表現することを行いましょう

#左側に棒グラフ、右側に散布図を表現したい
fig, ax = plt.subplots( 1, 2, figsize = (10, 5 ))
sns.countplot(tips.day ,  ax = ax[0] )
sns.regplot(tips.total_bill , tips.tip , ax  = ax[1])

画像4

seaborn の強み(パート2)

ヒストグラムと散布図をそれぞれ一つずつ出力するのは大変。だから、ヒストグラムと散布図を行列表現し、プロットする方法がる

■散布図行列(pairplot())

全ての量的変数に対して、ヒストグラムと散布図を表示!データの分布・相関についての情報を一挙に得られる

#データの保有している内容を行列で表現される
sns.pairplot(tips)

画像5

■相関係数の可視化(heatmap())

相関係数の情報に色を付けて表現することが可能

#これは一般的な記載方法例
#相関係数を出力するの関数
tips.corr()
#これに色の特徴を題したい
tips.corr().style.background_grandient("summer_r")
#heatmap()を用いる記載方法例
#こちらの場合、スケールバーが付く!
sns.heatmap(tips.corr() , cmap = "summer_r")

画像6

■カテゴリー毎のデータ分布を表示(swarmplot())

day列に含まれるカテゴリー毎にtotal_bill列の分布を可視化

sns.swarmplot("day","total_bill",data =tips)
#可視化したい切り口を増やす(変数を増やす方法)
#hue(色相)可視化の切り口を増やす
#dodge(かわす、回避する) Trueの場合、重ならない
sns.swarmplot("day","total_bill",data = tips, hue ="sex",dodge =True)

画像7

■カテゴリー毎にデータの分布を表示する(boxplot())

中央値と25%の信頼区間ごとの構成を表す
外れ値は、黒点で表示される

#sns.boxplot( x軸、 y軸、 何で分ける)
sns.boxplot(tips.day   tips.tip , hue =tips.sex )

画像8

Seabornの各種プロット

こちらのサイトで色々なseabornのプロット例が記載されています。

プロットも本格的に出来るようになりましたね。
matplotよりもseabornの方が、簡単だ。笑。
今いち、matplotのメリットが見えなくなってきました。けど、matplotを理解した上で、seabornを活用すると学習力が上がった感。はありますね。
本日もお疲れ様でした!

過去の記事はこちら!ご参考に


よろしければサポート頂けると幸いです!子供へのパパ時間提供の御礼(お菓子)に活用させて頂きます☆