こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- Pythonでヒートマップを作成したい。
- Seabornをヒートマップ作成メソッドを用いたプログラミング手法を知りたい。
【Python】Seabornとは?
SeabornとはPythonライブラリであり、グラフの作成やヒートマップの可視化を目的として用いられます。
SeabornはMatplotlibと同様人気が高いデータ可視化ライブラリです。特に、seabornを用いたグラフや表はデザイン性に優れていることが魅力の1つと言えます。
Seabornにはヒートマップを可視化できるSeaborn.heatmap()
メソッドが用意されており、本記事ではこのメソッドの使い方について詳しく解説します。
Seabornを用いたヒートマップ作成メソッドのひな型
seaborn.heatmap()メソッドのひな型コードを示します。まず引数の概要について確認しましょう。
Seaborn.heatmapメソッド
seaborn.heatmap(data,
vmin=None,
vmax=None,
cmap=None,
center=None,
robust=False,
annot=None,
fmt='.2g',
annot_kws=None,
linewidths=0,
linecolor='white',
cbar=True,
cbar_kws=None,
cbar_ax=None,
square=False,
ax=None,
xticklabels=True,
yticklabels=True,
mask=None,
**kwargs,
)
パラメータ(引数)の説明
引数名 | 概要 | デフォルト値 |
---|---|---|
data | ヒートマップを表現する2次元のデータ | 必須 |
vmin | カラーマップの最小値 | None |
vmax | カラーマップの最大値 | None |
cmap | Matplotlibのオブジェクトを指定し、カラーマップをデザイン | None |
center | colormapの中心値 | None |
robust | True:カラーマップの外れ値の影響を考慮(vmin, vmax=Noneの場合) | False |
annot | True:セル上に値出力 | None |
annot_kws | テキストプロパティを指定し、セル上の出力値の書式デザイン (annot=Trueの場合) | None |
fmt | True:文字列フォーマットを指定 | ‘.2g’ |
linewidths | 枠線の太さ | 0 |
linecolor | 枠線の色 | ‘white’ |
cbar | True:カラーバーを出力 | True |
cbar_kws | カラーバーの書式デザイン | None |
cbar_ax | カラーバーの軸指定 | None |
square | True:正方形のマップ出力 | False |
ax | マップの軸を指定 | None |
xticklabels | True:pandas.DataFrameの列名をX軸として出力 | True |
yticklabels | True:pandas.DataFrameの列名をY軸として出力 | True |
mask | 値をマスクするセルを指定 | None |
kwargs | その他キーワード引数を指定 |
【Python実践】Seabornでヒートマップを作成
それでは実際にPythonとSeabornを用いてヒートマップを可視化してみましょう。
データセットの説明
データセットには、Boston Housingというデータセットを活用します。
1970年代後半におけるボストンの住宅情報とその地域における環境をまとめたデータセットであり、住宅価格の予測を目的とした回帰モデル作成のチュートリアルによく利用されます。
Boston Housingデータセットの説明変数および目的変数の概要はそれぞれ以下になります。
説明変数一覧
特徴量名 | 概要 |
---|---|
CRIM | (地域人工毎の)犯罪発生率 |
ZN | 25,000平方フィート以上の住宅区画の割合 |
INDUS | (地域人工毎の)非小売業の土地面積の割合 |
CHAS | チャールズ川沿いに立地しているかどうか(該当の場合は1、そうでない場合は0) |
NOX | 窒素酸化物の濃度(単位:pphm) |
RM | 平均部屋数/一戸 |
AGE | 1940年よりも古い家の割合 |
DIS | 5つのボストン雇用センターまでの重み付き距離 |
RAD | 主要な高速道路へのアクセス指数 |
TAX | 10,000ドルあたりの所得税率 |
PTRATIO | (地域人工毎の)学校教師1人あたりの生徒数 |
B | (地域人工毎の)アフリカ系アメリカ人居住者の割合 |
LSTAT | 低所得者の割合 |
目的変数一覧
特徴量名 | 概要 |
---|---|
MEDV | 住宅価格の中央値(単位 $1,000) |
データの読み込み
前述のデータを用いて変数間の相関係数をヒートマップとして可視化します。下記を実行しデータを読み込みましょう。
# データ前処理
import numpy as np
import pandas as pd
# データ可視化
import seaborn
# データセット読込
from sklearn.datasets import load_boston
boston = load_boston()
# DataFrame作成
df = pd.DataFrame(boston.data)
df.columns = boston.feature_names
df["MEDV"] = boston.target
# 相関係数(今回ヒートマップを描くためのデータとして利用)
# ndarray形式に変換可能な2次元のデータセットを用いる
corr = np.corrcoef(df.values.T)
ヒートマップを作成
# ヒートマップ
hm = seaborn.heatmap(corr,
cmap=None,
annot=True,
fmt='.2g',
annot_kws={'size': 8},
linewidths=0,
linecolor='white',
cbar=True,
xticklabels=list(df.columns),
yticklabels=list(df.columns),
)
# グラフ可視化
plt.tight_layout()
plt.show()
【参考】Pythonでのデータ前処理・分析・可視化
当サイトではPythonを用いた「データ前処理手法」「データ分析」「グラフや表を用いた可視化」手法について幅広く解説しております。AI・機械学習にも応用できる内容となっておりますため、興味がある方は併せてご確認下さい。
Pythonを活用したデータ処理・分析手法一覧
【参考】Pythonとは・できること一覧
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら