ysk_son’s diary

勉強の記録

Pythonを使ったデータ分析の学習 - その6(相関関係を見る)

巷で評判の良いPythonオンライン教材、『【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門 | Udemy』を購入し、学習してみた。

前回エントリ(箱ひげ図、欠損値の処理)はこちらから。

セクション3: まずデータに向き合おう(続き)

相関関係を見てみよう - Section3_5.ipynb -

早速資料に沿って学習していく。

# おまじない

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline

# データ読み込み

train = pd.read_csv("train.csv")

# trainの先頭行の確認(データ読み込みが正しいかのチェック)

train.head()

ここまではいつもどおりなので画面ショットは割愛。
ここから相関関係について調べていく。

まずはtrainのyとtemperatureの相関関係を調べる。

相関関係とは、Aという事象とBという事象の間、双方向の動きに関係があることを指す。
例えば、気温が上がると弁当の売り上げ数もあがる関係があった場合、正の相関があると言い、
逆に、気温が上がると弁当の売り上げが下がる関係があった場合、負の相関があると言う。
※ なお、相関関係と因果関係は異なる為、注意が必要である(ここでは詳しくは触れない)

・この関係の度合は相関係数と呼ばれる数値で表される
・具体的にはcorr関数を使う

train[["y","temperature"]].corr()


このように表示される。
いつも思うがPythonのライブラリは本当に便利。
f:id:ysk_son:20180216162938p:plain

この結果から得られる情報は以下。
・対角線は自分自身なので必ず1になる(意味不明)
・yとtemperatureの相関係数は-0.65
・負の関係なのでどちらかが増えれば、もう一方は減る関係
・係数が1に近ければ関係が強く、0に近ければ関係が弱いと言える


今度はyとkcalの相関関係を調べる。
本来、欠損値があると相関係数は測定でないが、プログラムでは自動的に欠損値の行は削除されて計算される(便利)。

train[["y","kcal"]].corr()

このように表示される。
f:id:ysk_son:20180216163611p:plain


この結果から得られる情報は以下。
・プラスの関係なのでyとkcalは正の相関があると言える
 (どちらかが増えればもう一方も増える関係)
相関係数が0.14と小さな数字なので、相関は弱いと言える
相関係数からどういった散布図になるかの検討がつく


相関係数は数量の値で関係を表せるが、散布図を書くことで、視覚的にもっとわかりやすく書くことができる。

そこでyとtemperatureとの散布図を描いてみる。
散布図はplot.scatter関数を使う。
オプションとして、x="temperature", y="y", figsize=(5,5)と書く。

train.plot.scatter(x="temperature", y="y", figsize=(5,5))

このように表示される。
f:id:ysk_son:20180216164150p:plain


確かにyの値が減るとtemperatureの値も減っているように見える。
確かに負の相関である。

続いてyとkcalとの散布図も描いてみる。
書き方は全く同じ。
負の相関関係であるので異なるかたちになると想像できる。

train.plot.scatter(x="kcal", y="y", figsize=(5,5))

このように表示された。
f:id:ysk_son:20180216164413p:plain

確かに先程の散布図よりも特徴が見出しづらい。
まんべんなくバラバラに見える。


散布図を書くことによって視覚的に関係を読み取ることができるので非常に便利。


しかし、一方で注意点として、相関係数を鵜呑みにせず、散布図を書くことが非常に大切である。
というのも、散布図に1つでも外れ値があると本来の相関係数よりも過剰に大きくなったり、小さくなったりすることがあるのである。
データ分析ではこういった外れ値に対しての処理を考えることも非常に大切だと言われている。


ここまででセッション3は全て終了!
次回はセッション4から!