PCA
Last updated
Last updated
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
import pandas as pd
# 載入資料
iris = load_iris()
X = iris.data
y = iris.target
# 建立 PCA 模型並降為 2 維
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
# 繪圖
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y)
plt.xlabel("PC1")
plt.ylabel("PC2")
plt.title("PCA on Iris Dataset")
plt.show()print(pca.explained_variance_ratio_)
print("累積貢獻率:", sum(pca.explained_variance_ratio_))import numpy as np
from sklearn.datasets import load_iris
X = load_iris().data
# 1. 資料標準化
X_meaned = X - np.mean(X, axis=0)
# 2. 計算共變異矩陣
cov_mat = np.cov(X_meaned, rowvar=False)
# 3. 計算特徵值與特徵向量
eigen_vals, eigen_vecs = np.linalg.eigh(cov_mat)
# 4. 排序特徵值與特徵向量(由大至小)
sorted_index = np.argsort(eigen_vals)[::-1]
sorted_eigenvecs = eigen_vecs[:, sorted_index]
# 5. 選取前兩個主成分
n_components = 2
eigenvector_subset = sorted_eigenvecs[:, :n_components]
# 6. 投影至新空間
X_reduced = np.dot(X_meaned, eigenvector_subset)