Pythonによるデータ分析・機械学習ブログ

Pythonによるデータの前処理・グラフ化、機械学習、統計解析、画像処理、Webスクレイピング、自然言語処理の基礎について紹介していきます。

MENU

【第4回】Scipy、Numpy、Pandasを用いた相関係数の算出

はじめに

 相関分析とは 2つのデータの関係の強さを表す指標(相関係数)を計算し、数値化するデータ分析手法です。相関係数は-1以上1 以下の範囲で算出され、数値が正の場合は正の相関を示し、負の場合は負の相関を示します。そして1に近いほど強い正の相関がり、-1に近いほど強い負の相関があります。

 Pythonではscipy、numpy、pandasを用いることで相関係数を算出することができます。本記事ではscipy、numpy、pandasを用いた相関係数を算出する方法を紹介します。

SAMURAI TERAKOYA

 

1. scipyを用いた相関係数の算出

相関係数を求める前にデータに正規性があるかを検定する必要があります。その後、正規性があった場合にはピアソンの積率相関係数を、正規性がなかった場合にはスピアマンの順位相関係数を算出します。正規性の検定についてはこちらの記事をご覧ください。

それでは、Pythonコードを確認しましょう。

ピアソンの積率相関係数scipy.stats.pearsonrを用います。返り値は2つあり、相関係数とp値です。一般的にp値が0.05よりも小さい場合にその相関は有意であるとされています。

 

次に、スピアマンの順位相関係数scipy.stats.spearmanrを用います。返り値は2つあり、相関係数とp値です。一般的にp値が0.05よりも小さい場合にその相関は有意であるとされています。

 

ここで、ピアソンの積率相関係数の実例を示します。以下の例では、ボストンの住宅価格の学習用データセットを用いてピアソンの積率相関係数を算出しています。

 

2. Numpyを用いた相関係数の算出

Numpyを用いた相関係数の算出ではnumpy.corrcoefを用います。返り値はピアソンの積率相関係数です。以下に例を示します。返り値は行列となっており、1行1列目はxとx、2行2列目はyとyの相関係数のため1を出力しています。1行2列目、2行1列目はxとy、yとxの相関係数を示しています。

 

3. Pandasを用いた相関係数の算出

Pandasを用いた相関係数の算出ではpandas.DataFrame.corrを用います。引数のmethodを'pearson'、'spearman’を指定することでピアソンの積率相関係数、スピアマンの順位相関係数を算出することができます。この手法を用いることでDataFrameの各列ごとの相関係数を算出することができ、それらの相関係数をDataFrame型で取得することができます。さらに、それをseabornを用いてヒートマップで可視化することもできます。ヒートマップの描画方法はこちらの記事を、カラーマップについてはこちらの記事をご覧ください。

以下にPandasを用いた相関係数の算出の例を示します。

出力結果は以下のようになります。DataFrame型の各列間の相関係数とそれをヒートマップで可視化したものが以下です。

 

オススメ書籍

Pythonによるあたらしいデータ分析の教科書

Python3エンジニア認定データ分析試験の教科書にもなっている書籍で、データ分析に必要なPythonの基礎手法を身に付けることができます。具体的には、numpyとpandasを用いたデータの前処理、matplotlibを用いたデータのグラフ化、scikit-learnを用いた機械学習の基礎記述方法を身に付けることができます。これ一つで基礎はバッチリで、実務でも十分活用できると思います。個人的には見やすい書籍でした。

データサイエンス教本 Pythonで学ぶ統計分析・パターン認識・深層学習・信号処理・時系列データ分析

こちらの書籍は初心者から少し記述できるようになった人、かつ数学的な理論と一緒にPythonの記述方法を理解したい方にオススメです。統計分析、パターン認識、深層学習、信号処理、時系列データといった幅広く実務で使用する手法を学びたい方にもオススメです。

東京大学のデータサイエンティスト育成講座 ~Pythonで手を動かして学ぶデ―タ分析~

こちらの基礎を抑えながら実務で必要なPython記述法を学べる書籍です。基礎を一つ一つ抑えるというよりも実務で活用できるように必要な知識を身に付けられると感じました。これ一冊あれば十分かなと思いました。

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

 

おわりに

本記事ではscipy、numpy、pandasを用いた相関係数を算出する方法を紹介しました。本記事の内容はデータ分析時に頻繁に使用する内容なのでしっかりとマスターしましょう。