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と書くだけで算出されるので、かなり便利ですね。
コメント