スポンサーリンク

[Pandas]相関係数を計算する

Python

pandasで相関係数を計算する方法を解説します。

相関係数を計算する

データセット

import pandas as pd
from sklearn.datasets import load_diabetes
data = load_diabetes()
df = pd.DataFrame(
    data = data.data,
    columns = data.feature_names,
)
df["target"] = data.target
df

load_diabetesのデータを使います。

相関係数の計算

df.corr()

# ===== output =====
#     age	sex	bmi	bp	s1	s2	s3	s4	s5	s6	target
# age	1.000000	0.173737	0.185085	0.335428	0.260061 ...
# sex	0.173737	1.000000	0.088161	0.241010	0.035277 ...

corrで相関係数を計算できます。
すべての列に対して算出するため、上記のように”ageとageの相関係数は1″みたいになります。

df.corr()["target"]

# ===== output =====
# 	target
# age	0.187889
# sex	0.043062
# bmi	0.586450
# ...

なので、このように注目したい列のみを取り出して確認すると見やすいです。
目的変数”target”に対して”bmi”の相関係数が0.58あるので、特徴量として有効そうだとわかりますね。

df.corr()["target"].abs().sort_values(ascending = False)

# ===== output =====
# 	target
# target 1.000000
# bmi	0.586450
# s5	0.565883
# bp	0.441482
# ...

absを使うと絶対値となり、sort_valuesで大きい順にソートできます。
その結果、”bmi”, “s5”, “bp”あたりが特に相関係数が高く使えそうな特徴量だと考えられます。
列数が多すぎる場合はこのようにしてソートするのがおすすめです。

まとめ

pandasで相関係数を計算する方法を解説しました。
corrと書くだけで算出されるので、かなり便利ですね。

コメント

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