こんにちは!
皆さんは相関係数を求めようと思ったことはありませんか?
相関係数は、機械学習でも特徴量の選択をする時に使う事があったよ!
相関係数を求める事ができると、2組のデータの関係性がわかるのでとても便利です。
この相関係数は、NumPyの「corrcoef()」を使えば簡単に求める事ができますよ。
今回の記事では、以下の内容を紹介します。
- 相関係数とは?
- NumPyを用いた相関係数の求め方
相関係数
相関係数とは
相関係数とは、2組のデータの間にどのくらいの相関(関係性)があるのかを示す指標の一つです。
相関係数はよくrで表され、その範囲は、
-1 ≦ r ≦ 1
となります。
r の値が大きいほど強い正の相関があり、rの値が小さいほど強い負の相関があります。
相関係数の値の目安を以下の表に示します。
-1.0 ≦ r ≦ -0.7 | 強い負の相関 |
-0.7 ≦ r ≦ -0.4 | 負の相関 |
-0.4 ≦ r ≦ -0.2 | 弱い負の相関 |
-0.2 ≦ r ≦ 0.2 | ほとんど相関なし |
0.2 ≦ r ≦ 0.4 | 弱い正の相関 |
0.4 ≦ r ≦ 0.7 | 正の相関 |
0.7 ≦ r ≦ 1.0 | 強い正の相関 |
散布図で相関の例を示します。
r = 0.8の時の散布図
強い正の相関があることが見てわかりますね。
r = -0.8の時の散布図
こちらは、強い負の相関が見てわかります。
r = 0.2 の時の散布図
若干正の相関があるかな?くらいであまり相関があるようには見えないグラフですね。
相関係数の定義
相関係数の定義は以下になります。
各文字の意味は、
となります。
NumPyで相関係数を求める corrcoef
NumPyで相関係数を求めるには、「corrcoef()」を使用します。
np.corrcoef(x, y=None, rowvar=True)
x | 1次元または2次元配列を指定 |
y | 追加データを指定 |
rowver | Trueで行ごと、Falseで列ごとの相関係数を算出 |
それでは、corrcoef()を使って相関係数を求めてみましょう。
以下のプログラムは、数学と英語の得点の相関係数を求めるプログラムです。
import numpy as np
math = [71, 80, 95, 52, 93, 68, 98, 30, 78, 60]
english = [62, 89, 82, 95, 92, 89, 91, 72, 75, 93]
print(np.corrcoef(math, english))
解説
print(np.corrcoef(math, english))
数学と英語の得点の相関係数を求めます。
実行結果
[[1. 0.22347004]
[0.22347004 1. ]]
右上、左下の数字が、数学と英語の得点の相関係数です。
0.2より少し大きい程度なので、数学と英語の得点には弱い正の相関があることがわかります。
得点の散布図を見てみると・・・
若干ですが正の相関がありそうな散布図ですね。
まとめ
今回の記事では、以下の内容を紹介しました。
- 相関係数とは?
→2組のデータの関係性を求める指標 - NumPyを用いた相関係数の求め方
→「corrcoef()」を用いる
これで簡単に相関係数を求める事ができるようになったね!
相関係数は、様々な場面で使用されるため、ぜひ求める方法を覚えておきましょう!