こけこっこー

がんばる

pandasで相関係数を求める

どの特徴量がターゲットを求めるのに重要なのかを知るための指標として、 相関係数を使うのは、データ解析の第一歩に良さそうです。

まずは以下の記事に相関係数についてわかりやすまとめてあるので見てみましょう。

blog.apar.jp

x軸とy軸にそれぞれ異なる特徴量を設定して、値をプロットしていったときに 全体に右肩上がりの直線を引けそうなら相関係数は1に近づき、逆に右肩下がりの直線を引けそうなら相関係数は−1に近づきます。 直線が全く引けそうにない散らばった状態なら相関係数は0に近い状態です。

実際にpandasで相関係数を求めたければ pandas.DataFrame.corr を使うだけです。 上記の記事にあったような大変な計算をする必要はなく、用意された関数に任せればよいので楽ちんです。

pandas.DataFrame.corr — pandas 0.20.3 documentation

さて、やってみましょう。 まず、サンプルデータとして最初に詳解した相関係数の解説記事から 各取引先への商品Aと商品Bの販売個数データを使わせていただきました。 以下のように手打ちで作ります。

import pandas as pd
import numpy as np
df = pd.DataFrame(np.array([[12,28], [38,35], [28,55], [50, 87], [76, 93]]), columns = ['A商店','B商店'])
print(df)

こんな感じ

   商品A  商品B
0   12   28
1   38   35
2   28   55
3   50   87
4   76   93

このデータをもとに商品Aと商品Bの相関を求めます。 相関係数が1に近ければ正の相関なのでAが売れるときBも売れる可能性が高いということになります。 逆に−1に近ければ負の相関なのでAが売れる相手にはBは売れないです。 0に近ければ、特に相関はないのでAが売れてもBが売れるかはわからないです。

さて結果は

df.corr()

f:id:monisoi:20171016074242p:plain

0.865と出ましたので、どうやらAが売れるところにはBも売れそうです。

こんな感じでターゲットと特徴量との相関係数を求めて、絶対値の大きい特徴量に特に注目してデータ解析を行うと 学習をさせたときに良い結果が出せそうです。