【PythonでPCA】主成分分析を使ってデータを2次元に可視化する 画像あり|統計自主学習補足

はじめに

この記事は、

主成分分析(PCA)とは?次元削減の基本を初心者向けにやさしく解説|統計自主学習⑮

の補足として、Pythonを使ってPCAを実際に実装してみる内容です。

この記事では、

  • PCAによる次元削減
  • データを2次元に圧縮して可視化する を、実際のコードを使って体験していきます!

PCAとは?(簡単に復習)

PCA(主成分分析)は、
多次元データのばらつきを最大限に保ちながら、より少ない次元に圧縮する手法です。

特徴:

  • 情報のロスを最小限に抑えながら次元削減
  • 可視化・データ圧縮・ノイズ除去などに使われる
  • 主成分(PC1、PC2など)は、もとの特徴量の線形結合で表現される

1. 使用データセットの紹介

今回は、機械学習で有名な「Iris(アヤメ)データセット」を使います!

  • 特徴量:がく片・花びらの長さ・幅(4次元)
  • クラスラベル:アヤメの種類(3クラス)
from sklearn.datasets import load_iris
import pandas as pd

# データ読み込み
iris = load_iris()
X = iris.data
y = iris.target
feature_names = iris.feature_names

# データフレーム化
df = pd.DataFrame(X, columns=feature_names)
df['target'] = y
df.head()

2. PCAで次元削減してみよう!

まず、標準化(Zスコア正規化)を行い、PCAを実行します。

from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

# 標準化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# PCA実行(2次元に削減)
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)

print("PCA後のデータ形状:", X_pca.shape)

✅ 出力結果:
(150, 2) → 150個のデータが2次元になりました!


3. 2次元プロットで可視化してみよう!

import matplotlib.pyplot as plt

# クラスごとに色分けしてプロット
plt.figure(figsize=(8,6))
for i, label in enumerate(iris.target_names):
plt.scatter(X_pca[y == i, 0], X_pca[y == i, 1], label=label)

plt.xlabel('PC1')
plt.ylabel('PC2')
plt.title('PCA Visualization of Iris Dataset')
plt.legend()
plt.grid(True)
plt.show()

✅ 出力結果:

  • 種類ごとに点がきれいに分かれる様子が見えます!

4. 寄与率を確認してみよう

主成分がどれくらい元の情報を保持しているか?を見てみます。

print("各主成分の寄与率:", pca.explained_variance_ratio_)
print("累積寄与率:", sum(pca.explained_variance_ratio_))

✅ 出力例:

  • PC1が70%以上の情報を保持
  • PC2も20%以上の情報を保持
  • → 合計90%以上の情報をたった2次元に圧縮できている!
PCA実行結果の画像

まとめ

  • PCAは「多次元データを少ない次元にまとめる」ための強力なツール
  • 2次元可視化により、データの特徴や分布を直感的に理解できる
  • 実際にPythonで実装することで、理論だけでなく感覚も身につく!

✅ 【参考記事】

✅ 【次におすすめ】

コメント

タイトルとURLをコピーしました