Pythonで相関係数のヒートマップを作る方法

Python

本記事ではPythonで相関係数のヒートマップを作る方法を紹介します。
Pythonで相関係数を算出するにはPandasというライブラリを、ヒートマップを作るためにはSeabornというライブラリを使用します。

相関係数とは

相関係数とは2つのデータの関係の強さを数値化したものです。-1以上、1以下の値をとります。
1に近ければ正の相関が、-1に近ければ負の相関があるといえます。

ヒートマップとは

ヒートマップは二次元配列データの数値の大小を色によってわかりやすく示したものです。
左はヒートマップを使わない例で、右はヒートマップを使った例です。
ヒートマップを使用すると、明るい色は高い値、暗い色は低い値ということが一目でわかると思います。

相関係数とヒートマップの実装方法

事前準備

それでは相関係数とヒートマップを実装してゆきます。
まず、事前準備としてPandasとSeabornをインストールします。

pip install pandas seaborn

なお、Google Colaboratoryには既にPandasとSeabornはインストール済みです。

実装

今回は、カルフォルニアの住宅価格に関する相関係数をヒートマップ化してみましょう。

# ① カルフォルニア住宅価格データの準備
from sklearn.datasets import fetch_california_housing
california_housing = fetch_california_housing(as_frame=True)

# ② データの相関係数を算出する
X_df = california_housing.data
y_df = california_housing.target
X_df['MedHouseVal'] = y_df
corr = X_df.corr()

# ③ ヒートマップの出力
sns.set(rc = {'figure.figsize':(15,8)})
sns.heatmap(corr, annot=True)

上記のコードについて解説してゆきます。

カルフォルニアの住宅価格に関する相関係数をヒートマップ化
  • カルフォルニア住宅価格データの準備

    from sklearn.datasets import fetch_california_housingでカルフォルニア住宅価格データ取得関数を使用できるようにし、fetch_california_housing(as_frame=True)でデータを取得します。

    引数にas_frame=Trueを入力することでデータをDataFrameの形で取得できます。
    as_frame=Falseとするとデータをnumpy.arrayで取得できます。

    相関係数を算出するにはDataFrameの方が都合がよいのでas_frame=Trueとしましょう。

  • データの相関係数を算出する

    california_housing.dataで特徴量のDataFrameを取得できます。特徴量の一覧は下記のとおりです。

    MedIncブロックの所得中央値
    HouseAgeブロックの家屋年齢の中央値
    AveRooms1世帯あたりの平均部屋数
    AveBedrms1世帯あたりの平均寝室数
    Populationブロックの人口
    AveOccup世帯人数の平均値
    Latitude緯度
    Longitude経度
    Price住宅価格

    california_housing.targetで目的変数のDataFrameを取得できます。

    MedHouseVal住宅価格

    これらの特徴量と目的変数をX_df['MedHouseVal'] = y_dfで一つのDataFrameにひとまとめにし、X_df.corr()で相関係数を算出できます。

  • ヒートマップの出力

    sns.set(rc = {'figure.figsize':(15,8)})でヒートマップのサイズを指定します。
    sns.heatmap(corr, annot=True)でヒートマップを出力します。
    annot=Trueにするとヒートマップに数値が表示されます。

先程のコードを実行すると下記のヒートマップが表示されます。

これをみると、AveBedrmsとAveBedrms、MedIncとMedHouseValの相関係数が高いことがわかります。

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