鋒哥原創的Scikit-learn Python機器學習視頻教程:
2026版 Scikit-learn Python機器學習 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili
課程介紹
本課程主要講解基于Scikit-learn的Python機器學習知識,包括機器學習概述,特征工程(數據集,特征抽取,特征預處理,特征降維等),分類算法(K-臨近算法,樸素貝葉斯算法,決策樹等),回歸與聚類算法(線性回歸,欠擬合,邏輯回歸與二分類,K-means算法)等。
Scikit-learn Python機器學習 - 特征降維 壓縮數據 - 特征提取 - 主成分分析 (PCA)
PCA通過線性變換將原始特征轉換為一組線性不相關的變量(主成分),按方差大小排序。
PCA的核心思想是:將原始高維特征通過線性變換映射到新的低維坐標系中,這個新坐標系的坐標軸(主成分)按照能夠保留原始數據最大方差的方向依次排列。
這意味著第一個新坐標軸(第一主成分)保留了數據中最大程度的方差,第二個新坐標軸(第二主成分)在與第一個正交的前提下保留次大方差,以此類推。
🧠 直觀理解:一個經典的比喻
想象你在黑暗中從不同角度觀察一個三維物體(比如一個傾斜的橢圓盤子),并記錄下它在二維平面上的影子。
-
某些角度下的影子(比如正上方)可能看起來只是一個短線,丟失了大量關于盤子形狀的信息。
-
某些角度下的影子(比如從盤子側面)則能最大程度地展現它的形狀和大小(一個橢圓)。
PCA要做的就是自動找到那個“最佳觀測角度”,使得投影后的影子(低維數據)能包含原始物體(高維數據)最多的信息。而這個“信息量”,在PCA中就用方差來衡量。方差越大,意味著數據點在新坐標軸上分布得越分散,保留的信息就越多。
📊 數學原理與計算步驟(可分步理解)
假設有一個包含 m 個樣本和 n 個特征的數據集 X ),其中 X = [x_1, x_2, …, x_m] ,每個樣本 x_i 是一個 n 維向量。
( 快速理解這個PCA算法原理,可以查看 視頻 主成分分析 (PCA) 轉載自 抖音 動畫講編程 )
?? 關鍵參數與概念(以Scikit-learn為例)
參數/概念 | 說明 |
---|---|
n_components | 最重要的參數。指定要保留的主成分個數 k 。可以設為整數(如 2 ),也可以設為 0 到 1 之間的浮點數(如 0.95 ,表示保留95%的原始方差)。 |
svd_solver | 指定求解器。通常使用默認的 'auto' 即可。對于大型數據,使用 'randomized' 的隨機SVD方法會更高效。 |
explained_variance_ | 屬性。一個數組,表示每個主成分所捕獲的方差大小(即特征值)。 |
explained_variance_ratio_ | 屬性。一個數組,表示每個主成分所捕獲的方差占總方差的百分比。這是決定 k 取多少的關鍵依據。 |
components_ | 屬性。投影矩陣 $W$,每一行是一個主成分(特征向量)。 |
我們來看一個示例:
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_iris# 加載數據
iris = load_iris()
X, y = iris.data, iris.target# 1. 標準化數據(至關重要!)
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)# 2. 初始化PCA,保留2個主成分用于可視化
pca = PCA(n_components=2)# 3. 訓練轉換數據
X_pca = pca.fit_transform(X_scaled)print("原始數據形狀:", X.shape)
print("降維后數據:", X_pca)
運行結果: