本文簡要介紹python語言中 sklearn.decomposition.PCA
的用法。
用法:
class sklearn.decomposition.PCA(n_components=None, *, copy=True, whiten=False, svd_solver='auto', tol=0.0, iterated_power='auto', random_state=None)
主成分分析(PCA)。
使用數據的奇異值分解將其投影到較低維空間的線性降維。在應用 SVD 之前,輸入數據居中,但未針對每個特征進行縮放。
它使用完整 SVD 的 LAPACK 實現或通過 Halko 等人的方法隨機截斷的 SVD。 2009,取決於輸入數據的形狀和要提取的組件數量。
它還可以使用截斷的 SVD 的 scipy.sparse.linalg ARPACK 實現。
請注意,此類不支持稀疏輸入。有關稀疏數據的替代方案,請參見
TruncatedSVD
。在用戶指南中閱讀更多信息。
- n_components:int、float 或 ‘mle’,默認 = 無
要保留的組件數。如果未設置 n_components 則保留所有組件:
n_components == min(n_samples, n_features)
如果
n_components == 'mle'
和svd_solver == 'full'
,則使用 Minka 的 MLE 來猜測維度。使用n_components == 'mle'
會將svd_solver == 'auto'
解釋為svd_solver == 'full'
。如果
0 < n_components < 1
和svd_solver == 'full'
,選擇分量數,使得需要解釋的方差量大於 n_components 指定的百分比。如果
svd_solver == 'arpack'
,組件的數量必須嚴格小於 n_features 和 n_samples 的最小值。因此, None 情況導致:
n_components == min(n_samples, n_features) - 1
- copy:布爾,默認=真
如果為 False,傳遞給 fit 的數據將被覆蓋並且運行 fit(X).transform(X) 不會產生預期的結果,請改用 fit_transform(X)。
- whiten:布爾,默認=假
當為 True(默認為 False)時,
components_
向量乘以 n_samples 的平方根,然後除以奇異值,以確保輸出與單位 component-wise 方差不相關。白化將從轉換後的信號中刪除一些信息(分量的相對方差尺度),但有時可以通過使下遊估計器的數據尊重一些hard-wired假設來提高下遊估計器的預測準確性。
- svd_solver:{‘auto’, ‘full’, ‘arpack’, ‘randomized’},默認='自動'
- 如果自動:
求解器由基於
X.shape
和n_components
的默認策略選擇:如果輸入數據大於 500x500 並且要提取的組件數低於數據最小維度的 80%,則效率更高‘randomized’ 方法已啟用。否則,將計算精確的完整 SVD,然後可以選擇截斷。- 如果滿了:
通過
scipy.linalg.svd
調用標準LAPACK求解器運行精確的完整SVD並通過後處理選擇組件- 如果是 arpack:
運行 SVD 被截斷為 n_components 通過
scipy.sparse.linalg.svds
調用 ARPACK 求解器。它嚴格要求 0 < n_components < min(X.shape)- 如果隨機:
通過 Halko 等人的方法運行隨機 SVD。
- tol:浮點數,默認=0.0
由 svd_solver == ‘arpack’ 計算的奇異值的容差。必須在 [0.0, 無窮大) 範圍內。
- iterated_power:int 或 ‘auto’,默認='auto'
由svd_solver == ‘randomized’ 計算的冪方法的迭代次數。必須在 [0, 無窮大) 範圍內。
- random_state:int、RandomState 實例或無,默認=無
當使用 ‘arpack’ 或 ‘randomized’ 求解器時使用。傳遞 int 以獲得跨多個函數調用的可重現結果。請參閱術語表。
- components_:ndarray 形狀(n_components,n_features)
特征空間中的主軸,表示數據中最大方差的方向。等效地,居中輸入數據的右奇異向量與其特征向量平行。組件按
explained_variance_
排序。- explained_variance_:ndarray 形狀 (n_components,)
每個選定組件解釋的方差量。方差估計使用
n_samples - 1
自由度。等於 X 的協方差矩陣的 n_components 個最大特征值。
- explained_variance_ratio_:ndarray 形狀 (n_components,)
每個選定組件解釋的方差百分比。
如果未設置
n_components
,則存儲所有分量並且比率之和等於 1.0。- singular_values_:ndarray 形狀 (n_components,)
對應於每個選定組件的奇異值。奇異值等於 lower-dimensional 空間中
n_components
變量的 2 範數。- mean_:ndarray 形狀 (n_features,)
Per-feature 經驗平均值,根據訓練集估計。
等於
X.mean(axis=0)
。- n_components_:int
組件的估計數量。當 n_components 設置為 ‘mle’ 或 0 到 1 之間的數字(svd_solver == ‘full’)時,此數字是根據輸入數據估算的。否則,它等於參數 n_components,或者如果 n_components 為 None,則等於 n_features 和 n_samples 的較小值。
- n_features_:int
訓練數據中的特征數。
- n_samples_:int
訓練數據中的樣本數。
- noise_variance_:浮點數
根據 Tipping 和 Bishop 1999 的概率 PCA 模型估計的噪聲協方差。參見 C. Bishop 的“模式識別和機器學習”,第 12.2.1 頁。 574 或 http://www.miketipping.com/papers/met-mppca.pdf 。需要計算估計的數據協方差和分數樣本。
等於 X 的協方差矩陣的 (min(n_features, n_samples) - n_components) 個最小特征值的平均值。
- n_features_in_:int
擬合期間看到的特征數。
- feature_names_in_:ndarray 形狀(
n_features_in_
,) 擬合期間看到的特征名稱。僅當
X
具有全為字符串的函數名稱時才定義。
參數:
屬性:
參考:
對於 n_components == ‘mle’,此類使用以下方法:Minka, T. P..“PCA 維度的自動選擇”。在 NIPS,第 598-604 頁
從以下位置實現概率 PCA 模型:Tipping, M. E. 和 Bishop, C. M. (1999)。 “概率主成分分析”。皇家統計學會雜誌:B 係列(統計方法),61(3),611-622。通過 score 和 score_samples 方法。
對於svd_solver == ‘arpack’,請參閱
scipy.sparse.linalg.svds
。對於svd_solver == ‘randomized’,請參見:Halko, N.、Martinsson, P. G. 和 Tropp, J. A. (2011)。 “尋找具有隨機性的結構:構造近似矩陣分解的概率算法”。暹羅評論,53(2),217-288。並且Martinsson, P. G.、Rokhlin, V. 和 Tygert, M. (2011)。 “矩陣分解的隨機算法”。應用和計算諧波分析,30(1),47-68.
例子:
>>> import numpy as np >>> from sklearn.decomposition import PCA >>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]]) >>> pca = PCA(n_components=2) >>> pca.fit(X) PCA(n_components=2) >>> print(pca.explained_variance_ratio_) [0.9924... 0.0075...] >>> print(pca.singular_values_) [6.30061... 0.54980...]
>>> pca = PCA(n_components=2, svd_solver='full') >>> pca.fit(X) PCA(n_components=2, svd_solver='full') >>> print(pca.explained_variance_ratio_) [0.9924... 0.00755...] >>> print(pca.singular_values_) [6.30061... 0.54980...]
>>> pca = PCA(n_components=1, svd_solver='arpack') >>> pca.fit(X) PCA(n_components=1, svd_solver='arpack') >>> print(pca.explained_variance_ratio_) [0.99244...] >>> print(pca.singular_values_) [6.30061...]
相關用法
- Python sklearn PowerTransformer.inverse_transform用法及代碼示例
- Python sklearn PredefinedSplit用法及代碼示例
- Python sklearn ParameterGrid用法及代碼示例
- Python sklearn PatchExtractor用法及代碼示例
- Python sklearn PolynomialFeatures用法及代碼示例
- Python sklearn PassiveAggressiveClassifier用法及代碼示例
- Python sklearn Product用法及代碼示例
- Python sklearn PLSRegression用法及代碼示例
- Python sklearn PrecisionRecallDisplay.from_predictions用法及代碼示例
- Python sklearn PrecisionRecallDisplay用法及代碼示例
- Python sklearn PrecisionRecallDisplay.from_estimator用法及代碼示例
- Python sklearn Perceptron用法及代碼示例
- Python sklearn PairwiseKernel用法及代碼示例
- Python sklearn PLSSVD用法及代碼示例
- Python sklearn PLSCanonical用法及代碼示例
- Python sklearn Pipeline用法及代碼示例
- Python sklearn PassiveAggressiveRegressor用法及代碼示例
- Python sklearn PowerTransformer用法及代碼示例
- Python sklearn PolynomialCountSketch用法及代碼示例
- Python sklearn ParameterSampler用法及代碼示例
- Python sklearn PartialDependenceDisplay.from_estimator用法及代碼示例
- Python sklearn PoissonRegressor用法及代碼示例
- Python sklearn jaccard_score用法及代碼示例
- Python sklearn WhiteKernel用法及代碼示例
- Python sklearn CalibrationDisplay.from_predictions用法及代碼示例
注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.decomposition.PCA。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。