0Pricing
Learn AI with Python · レッスン

二変量解析と多変量解析

散布図、ペアプロット、相関ヒートマップ、グループ別統計を学びます。

「二変量解析と多変量解析」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。

1つの変数から複数の変数へ

二変量分析では2つの変数間の関係を調べ、多変量分析では複数の変数を一度に調べます。

目的は、どの特徴量が一緒に変化するかを見つけ、相互作用を発見し、目的変数の予測に役立つ変数を判断することです。

plt.scatterによる散布図

散布図は2つの数値変数を互いにプロットします。各点は1つの行を表し、傾向、クラスタ、外れ値を明らかにします。

import matplotlib.pyplot as plt
import seaborn as sns

plt.scatter(df["height"], df["weight"], alpha=0.4)
plt.xlabel("Height")
plt.ylabel("Weight")
plt.show()

散布図の読み方

方向(上向き = 正の関係、下向き = 負の関係)、強さ(帯状に密集しているか、雲のように散らばっているか)、形状(線形か曲線か)に注目します。

sns.scatterplotでhueを指定すると、カテゴリごとに点を色分けしてグループ構造を明らかにできます。

sns.scatterplot(x="height", y="weight", hue="gender", data=df, alpha=0.5)
plt.show()

df.corr()による相関

df.corr()は、数値列間のピアソン相関をペアごとに計算します。値は-1から+1の範囲になります。

  • +1 → 完全な正の線形関係
  • 0 → 線形関係なし
  • -1 → 完全な負の線形関係
corr = df.corr(numeric_only=True)
print(corr["price"].sort_values(ascending=False))

相関ヒートマップ

相関行列はヒートマップにすると読みやすくなります。annot=Trueを渡すと、各セルの中に値を表示できます。

正と負の相関を異なる色で示すため、発散型カラーマップ(例:coolwarm)を使います。

corr = df.corr(numeric_only=True)
sns.heatmap(corr, annot=True, fmt=".2f", cmap="coolwarm", center=0)
plt.show()

多重共線性の発見

2つの特徴量に非常に高い相関(例:0.9超)がある場合、それらは重複した情報を持っています。これは多重共線性と呼ばれ、線形モデルを不安定にする可能性があります。

ヒートマップを使うと、重複した情報を持つペアがすぐに見つかるため、どちらか一方を削除できます。

corr = df.corr(numeric_only=True).abs()
high = corr[(corr > 0.9) & (corr < 1.0)]
print(high.dropna(how="all"))

相関は因果関係を意味しない

強い相関があるからといって、一方の変数が他方の原因であるとは限りません。隠れた第三の変数が両方に影響している可能性もあれば、関係が偶然である可能性もあります。

相関は仮説を立てるために使い、その後、ドメイン知識と統制された分析によって検証します。

sns.pairplotによるペアプロット

sns.pairplotは、数値列のあらゆるペアについて散布図のグリッドを描き、対角線上にはヒストグラムまたはKDEを表示します。

すべての二変量の関係を一度にざっと確認する最速の方法です。列数の2乗に比例して規模が大きくなるため、大規模なデータセットでは列を限定します。

sns.pairplot(df[["height", "weight", "age", "income"]], hue="gender")
plt.show()

グループ別の箱ひげ図

数値変数とカテゴリ変数の関係を調べるには、箱ひげ図のx軸にカテゴリを配置します。グループごとの分布をすぐに比較できます。

sns.boxplot(x="city", y="income", data=df)
plt.xticks(rotation=45)
plt.show()

グループ別の集計

プロットは数値で補完できます。groupbyとaggを使うと、カテゴリごとに数値列を要約できます。

これは表形式で行う多変量分析です。平均、中央値、件数を横に並べて比較できます。

summary = df.groupby("city")["income"].agg(["mean", "median", "count"])
print(summary.sort_values("mean", ascending=False))

エンコーディングによる多変量プロット

視覚的エンコーディングを使うと、x、y、色(hue)、サイズによって、3つ以上の変数を1つのグラフに取り込めます。

別々のプロットを作らなくても、第三の次元によって関係がどのように変化するかを示せます。

sns.scatterplot(x="height", y="weight", hue="age", size="income", data=df)
plt.show()

クイックチェック:相関の範囲

df.corr()を実行し、2つの特徴量の間に-0.85という値が表示されたとします。

まとめ:二変量分析と多変量分析

これで、変数間の関係を調べられるようになりました。

  • 2つの数値変数にはplt.scatter / sns.scatterplot
  • 相関行列にはdf.corr()とsns.heatmap(annot=True)
  • 高い相関は多重共線性の可能性を示すため、重複した特徴量を削除します
  • すべてのペアの概要にはsns.pairplot
  • 数値変数とカテゴリ変数の比較には、グループ別の箱ひげ図とgroupby().agg()

次は、特徴量を予測対象に直接結び付けます。

よくある質問

「二変量解析と多変量解析」レッスンは無料ですか?

はい。「二変量解析と多変量解析」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。

「二変量解析と多変量解析」で何を学びますか?

散布図、ペアプロット、相関ヒートマップ、グループ別統計を学びます。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Learn AI with Pythonを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「二変量解析と多変量解析」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このLearn AI with Pythonレッスンでコードを書いて実行できますか?

はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. EDA ワークフローとデータプロファイリング
  2. 単変量解析
  3. 二変量解析と多変量解析
  4. 特徴量分布と目的変数の分析
← Learn AI with Pythonに戻る