글 한눈에 보기

문제 설정
64차원의 손글씨 데이터 사이킷런: https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html
원본 구조
데이터 설명
데이터 맥락
64차원의 손글씨 데이터 사이킷런: https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html
주요 장
데이터 설명
구현 흐름
데이터셋 불러오기 -> StandardScaler 스케일링 -> 데이터 분포 시각화
자료
ipynb / md · 코드 11 · 실행 10
주요 스택
sklearn, matplotlib

데이터 설명

64차원의 손글씨 데이터

사이킷런: https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_digits.html

from sklearn.datasets import load_digits                      # 손글씨 이미지 (64차원)
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
# 데이터 불러오기
X, y = load_digits(return_X_y=True)
X
y
# 데이터 표준화

X_scaled = StandardScaler().fit_transform(X)
X_scaled
# PCA전 시각화

plt.figure(figsize=(6,4))
scatter = plt.scatter(X[:,0], X[:,1], c=y, cmap='tab10', alpha=0.7)
plt.xlabel('X1')
plt.ylabel('X2')
plt.colorbar(scatter, label="Digit Label")
plt.show()
# 차원 축소
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
# PCA 후 시각화

plt.figure(figsize=(6,4))
scatter = plt.scatter(X_pca[:,0], X_pca[:,1], c=y, cmap='tab10', alpha=0.7)
plt.xlabel('X1')
plt.ylabel('X2')
plt.colorbar(scatter, label="Digit Label")
plt.show()
# 스크리플롯

plt.figure(figsize=(12,4))
plt.plot(
        range(1, len(pca.explained_variance_ratio_)+1),        # X축
        pca.explained_variance_,                               # Y축
        marker='o', linestyle='--'
        )
plt.title("Scree plot")
plt.grid(True)
plt.show()