iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0
AI & Data

紮實的ML機器學習原理~打造你對資料使用sklearn的靈敏度系列 第 5

DAY 5 「PCA & SVD」當特徵太多要怎麼辦?

  • 分享至 

  • xImage
  •  

數據分析和機器學習中常用的降維技術

  • PCA(主成分分析)
  1. 定義:
    主成分分析(PCA)是一種線性降維技術,找到數據中的主要特徵或主成分,並將數據投影到這些主成分上,從而實現降維

  2. 工作原理:
    計算協方差矩陣:首先,將數據進行標準化,然後計算其特徵的協方差矩陣
    求解特徵向量和特徵值:通過對協方差矩陣進行特徵值分解或奇異值分解,獲得特徵向量和相應的特徵值
    選擇主成分:根據特徵值的大小,選擇前k個主成分,這些主成分將包含大部分數據的變異性
    投影:將數據投影到所選的主成分上,從而實現降維

  3. 應用:
    降維:減少特徵數量,同時保留數據的主要信息。
    壓縮:將高維數據轉換為低維表示,以節省計算資源和存儲空間。

from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# 載入鳶尾花數據集
iris = load_iris()
X = iris.data
y = iris.target

# 初始化 PCA 模型,選擇想要保留的主成分數量
pca = PCA(n_components=2)

# 進行 PCA 降維
X_pca = pca.fit_transform(X)

# 繪製降維後的數據
plt.figure(figsize=(8, 6))
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis')
plt.xlabel('第一主成分')
plt.ylabel('第二主成分')
plt.title('PCA降維後的鳶尾花數據集')
plt.colorbar(label='鳶尾花類別')
plt.show()

  • SVD(奇異值分解)
  1. 定義:
    奇異值分解(SVD)是一種線性代數的技術,它將一個矩陣分解為三個矩陣的乘積,包括一個左奇異向量矩陣、一個對角奇異值矩陣和一個右奇異向量矩陣。

  2. 工作原理:
    給定一個矩陣A,其SVD分解為:
    A=UΣV^T
    其中:
    U是一個正交矩陣,包含了A的左奇異向量
    Σ是一個對角矩陣,包含了A的奇異值
    V^T是另一個正交矩陣,包含了A的右奇異向量

  3. 應用:
    奇異值分解在矩陣的壓縮和重建中有廣泛的應用,也被用於特徵提取等

from sklearn.datasets import load_iris
from sklearn.decomposition import TruncatedSVD
import matplotlib.pyplot as plt

# 載入鳶尾花數據集
iris = load_iris()
X = iris.data
y = iris.target

# 初始化 TruncatedSVD 模型,選擇想要保留的主成分數量
svd = TruncatedSVD(n_components=2)

# 進行 SVD 降維
X_svd = svd.fit_transform(X)

# 繪製降維後的數據
plt.figure(figsize=(8, 6))
plt.scatter(X_svd[:, 0], X_svd[:, 1], c=y, cmap='viridis')
plt.xlabel('第一奇異值')
plt.ylabel('第二奇異值')
plt.title('SVD降維後的鳶尾花數據集')
plt.colorbar(label='鳶尾花類別')
plt.show()```

上一篇
DAY 4 「隨機森林(Random Forest)」sklearn來進行乳腺癌檢測~
下一篇
DAY 6 「 邏輯回歸(Logistic Regression)」鳶尾花實作~
系列文
紮實的ML機器學習原理~打造你對資料使用sklearn的靈敏度30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言