

📌 예시 (iris 데이터 4차원 → 2차원)
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
import pandas as pd
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target
plt.scatter(df['sepal length (cm)'], df['sepal width (cm)'], c=df['target'])
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')
plt.title('Iris Dataset 2D Projection Example')
plt.show()

1. 특성 선택 (Feature Selection)
2. 특성 추출 (Feature Extraction)

📌 예시 (PCA 적용)
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
# 데이터 스케일링
X = StandardScaler().fit_transform(iris.data)
# PCA 2차원으로 축소
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
print("설명된 분산 비율:", pca.explained_variance_ratio_)

📌 시각화 예제
import matplotlib.pyplot as plt
plt.figure(figsize=(8,6))
plt.scatter(X_pca[:,0], X_pca[:,1], c=iris.target, cmap='viridis')
plt.xlabel('PC1')
plt.ylabel('PC2')
plt.title('Iris Dataset PCA (2D)')
plt.colorbar(label='Species')
plt.show()
📌 MNIST 예제 (차원축소)
from sklearn.datasets import fetch_openml
mnist = fetch_openml('mnist_784', version=1)
X_mnist, y_mnist = mnist.data, mnist.target
pca = PCA(n_components=50) # 784 → 50차원
X_mnist_pca = pca.fit_transform(X_mnist)
print("원본 차원:", X_mnist.shape)
print("축소된 차원:", X_mnist_pca.shape)
설명된 분산 비율 (Explained Variance Ratio)
→ 각 주성분이 원본 데이터의 정보를 얼마나 보존하는지 나타냄
로딩(Loading)
→ 각 원본 변수가 주성분에 기여하는 정도
print("주성분 로딩:\n", pca.components_)