Menu
CoddyTech

相関行列

CoddyのMachine Learningジャーニー「機械学習のための統計」セクションの一部。レッスン 31/64。

特徴量を選ぶということは、すべての列とターゲットを一度に比較することです。df.corr(numeric_only=True)は、テキスト列をスキップして相関行列を作成します。

laptops = pd.DataFrame({
    "model": ["Arc", "Bolt", "Cove", "Dune", "Echo", "Flux", "Gale"],
    "ram_gb": [8, 16, 8, 32, 16, 16, 32],
    "weight_kg": [2.3, 1.4, 2.0, 1.1, 1.8, 1.2, 1.6],
    "battery_h": [7, 9, 10, 13, 6, 11, 8],
    "price": [650, 1100, 700, 1600, 900, 1350, 1200],
})
corr = laptops.corr(numeric_only=True)

4つのノートパソコンの列の相関行列を数値のグリッドで示したもの。対角線上は灰色で1.00。価格の列が強調表示されている:ram_gb 0.81、weight_kg -0.95、battery_h 0.70

各セルは、その行と列のrです。最も強い特徴量を見つけるには、符号を無視して価格列を大きさで順位付けします。

ranked = np.abs(corr["price"]).sort_values(ascending=False)
print(ranked.index[1])

これは次のように出力されます:

weight_kg

インデックス0は、1にあるpriceそのものです。軽量のノートパソコンほど高価です。-0.95が最も強い関連性を示しています。

challenge icon

チャレンジ

中級

あるエネルギー会社が冬に24軒の住宅を調査しました。homes.csvには、homeコードと、数値列area_m2、insulation_cm、residents、outside_temp_c、heating_kwhがあります。プログラムは対象列を読み込みます。

  1. 相関行列の対象列を、小数点以下2桁に丸めて出力します。
  2. 以下のように、Strongest:、最も強い関連のある他の列、およびそのrを出力します。

別の調査で、対象がheating_kwhの場合:

windows        0.72
floors         0.68
age_years      0.23
heating_kwh    1.00
Name: heating_kwh, dtype: float64
Strongest: windows (r = 0.72)

自分で試してみよう

import numpy as np
import pandas as pd

homes = pd.read_csv("homes.csv")
target = input()

# 以下にコードを記述してください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

機械学習のための統計のすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ