主因素分析(PCA)是一種常用的降維技巧,它經由過程正交變更將一組可能相幹的變數轉換為一組線性不相幹的變數,這些新變數被稱為主因素。在scikit-learn庫中,PCA是一個富強的東西,可能幫助我們有效地停止數據降維。
PCA的基本道理
PCA的核心頭腦是找到數據會合的重要變更偏向,並將數據投影到這些偏向上。這些偏向稱為主因素,它們是數據集方差最大年夜的偏向。經由過程抉擇恰當數量的主因素,我們可能保存數據中的大年夜部分信息,同時減少數據的維度。
1. 打算協方差矩陣
PCA的第一步是打算數據集的協方差矩陣。協方差矩陣描述了數據會合各個變數之間的相幹性。假如協方差矩陣的特徵值較大年夜,則對應的主因素包含了數據中的大年夜部分信息。
import numpy as np
from sklearn.decomposition import PCA
# 假設X是原始數據集
X = np.array([[1, 2], [2, 3], [3, 5], [5, 7], [6, 8]])
# 創建PCA東西
pca = PCA(n_components=2)
# 打算協方差矩陣並利用PCA
X_pca = pca.fit_transform(X)
2. 找到主因素
接上去,我們須要找到協方差矩陣的特徵值跟特徵向量。特徵值表示對應主因素的方差,而特徵向量表示主因素的偏向。
# 獲取特徵值跟特徵向量
eigenvalues, eigenvectors = np.linalg.eig(pca.explained_variance_, pca.explained_variance_vectors_)
3. 抉擇主因素
根據特徵值的大小,我們可能抉擇前k個主因素。平日,我們會抉擇可能闡明大年夜部分數據方差的那些主因素。
# 抉擇前k個主因素
k = 1
eigenvalues_k = eigenvalues[:k]
eigenvectors_k = eigenvectors[:, :k]
# 打算主因素權重
weights = eigenvalues_k * eigenvectors_k
4. 降維
最後,我們將原始數據投影到選定的主因素上,從而實現降維。
# 降維
X_reduced = np.dot(X, weights)
scikit-learn中的PCA
在scikit-learn中,PCA的實現非常簡單。我們可能直接利用PCA
類來處理數據降維。
# 創建PCA東西,指定降維後的維度
pca = PCA(n_components=2)
# 練習PCA模型
pca.fit(X)
# 降維
X_reduced = pca.transform(X)
PCA的上風跟範圍性
上風
- 減少數據維度:PCA可能幫助我們減少數據集的維度,從而增加打算本錢跟進步模型的可闡明性。
- 保存信息:PCA經由過程抉擇方差最大年夜的主因素,可能保存數據中的大年夜部分信息。
- 無監督進修:PCA是一種無監督進修方法,不須要標籤數據。
範圍性
- 數據標準化:PCA對數據的標準非常敏感,因此在停止PCA之前,平日須要對數據停止標準化。
- 喪掉信息:固然PCA可能保存大年夜部分信息,但仍然會喪掉一部分信息。
- 闡明性:PCA降維後的主因素可能難以闡明,特別是當主因素不是原始變數的線性組合時。
總結
PCA是一種富強的降維東西,可能幫助我們減少數據集的維度,同時保存大年夜部分信息。在scikit-learn中,PCA的實現非常簡單,我們可能輕鬆地將其利用於現實的數據分析中。但是,我們也應當注意PCA的範圍性,並確保在利用PCA之前對數據停止恰當的預處理。