Pythonライブラリ「Scikit-learn」でモデル学習に使用する訓練データの相関係数を求める方法とサンプルコードについて解説します。
訓練データの相関係数を求める方法
相関係数 $r$ は、2つの変数の関係の強さを表す指標です。単回帰分析では「特徴量」と「ターゲット変数」の関係の強さを確かめることができます。つまり、「そもそも登録者数と視聴者数に関係があるのか?」ということを確認ができます。相関係数 $r$の範囲は −1〜+1 で、以下のように関係性の傾向を知ることができます。
相関係数 $r$ | 関係の強さ | 例 |
---|---|---|
$r = +1$ | 完全な正の相関 | 登録者数が増えると視聴者数も必ず増える |
$r \approx +0.8$ | 強い正の相関 | 登録者数が増えると視聴者数も増える傾向がある |
$r = 0$ | 無相関 | 登録者数と視聴者数に関係がない |
$r \approx -0.8$ | 強い負の相関 | 登録者数が増えると視聴者数が減る傾向がある |
$r = -1$ | 完全な負の相関 | 登録者数が増えると視聴者数が必ず減る |
相関係数の計算方法など、数理的な内容は以下ページで解説しています。

【単回帰分析とは】計算式の仕組みをVTuberの視聴者数予測を例にわかりやすく解説
単回帰分析とは?計算式の仕組みや求め方、決定係数による性能検証方法などをVTuberの視聴者数予測を例をわかりやすく解説します。
サンプルコード① 単回帰分析の場合
Scikit-learnで単回帰分析を行う際に、相関係数を求める機能を追加したものが以下になります。
※読み込んだデータ:dataset01.csv
「相関係数 r: 0.9887097324786042」となり、特徴量(登録者数)とターゲット変数(視聴者数)の間に、高い相関性がある(ほぼ線形の関係性がある)ことがわかります。単回帰モデルの前提(線形性)がかなり妥当である可能性が高いです。ただし、これは相関の強さであって、因果関係を示すものではありません。「強い相関=良いモデル」ではないので、注意が必要です。良いモデルかどうかを判断するには、次に解説する「汎化性能の検証」などを行います。
コード解説
これまでのサンプルコードとは異なる、重要な箇所に絞って解説します。
# 相関係数を算出
correlation = np.corrcoef(dataset["チャンネル登録者数"], dataset["視聴者数"])[0, 1]
print("相関係数 r:", correlation)
dataset["チャンネル登録者数"]
は、特徴量(説明変数)。Pandas Series(1次元配列)形式。dataset["視聴者数"]
は、ターゲット変数(目的変数)。Pandas Series(1次元配列)形式。np.corrcoef(x, y)
は、2つの配列の相関係数行列を返すNumPyの関数です。[0, 1]
は、相関係数行列の中から、xとyの相関係数だけを抽出しています。
関連ページ
以下ページでは、Pythonライブラリ「scikit-learn」の使い方を数理的な背景も含めて解説していますので、是非ご一読ください。

【Scikit-learn超入門】使い方をサンプルコード付きで解説
Pythonライブラリ「Scikit-learn」で機械学習を行う方法を入門者向けに解説します。
コメント