本文簡要介紹python語言中 sklearn.decomposition.KernelPCA
的用法。
用法:
class sklearn.decomposition.KernelPCA(n_components=None, *, kernel='linear', gamma=None, degree=3, coef0=1, kernel_params=None, alpha=1.0, fit_inverse_transform=False, eigen_solver='auto', tol=0, max_iter=None, iterated_power='auto', remove_zero_eig=False, random_state=None, copy_X=True, n_jobs=None)
核主成分分析(KPCA)。
通過使用內核進行非線性降維(參見 Pairwise metrics, Affinities and Kernels)。
它使用完整 SVD 的
scipy.linalg.eigh
LAPACK 實現或截斷 SVD 的scipy.sparse.linalg.eigsh
ARPACK 實現,具體取決於輸入數據的形狀和要提取的組件數量。它還可以通過[3]中提出的方法使用隨機截斷的SVD,請參見eigen_solver
。在用戶指南中閱讀更多信息。
- n_components:整數,默認=無
組件的數量。如果為 None,則保留所有非零分量。
- kernel:{‘linear’, ‘poly’,‘rbf’, ‘sigmoid’, ‘cosine’, ‘precomputed’},默認='線性'
用於 PCA 的內核。
- gamma:浮點數,默認=無
rbf、poly 和 sigmoid 內核的內核係數。被其他內核忽略。如果
gamma
是None
,則將其設置為1/n_features
。- degree:整數,默認=3
聚核的度數。被其他內核忽略。
- coef0:浮點數,默認=1
poly 和 sigmoid 內核中的獨立項。被其他內核忽略。
- kernel_params:字典,默認=無
內核的參數(關鍵字參數)和值作為可調用對象傳遞。被其他內核忽略。
- alpha:浮點數,默認=1.0
學習逆變換的嶺回歸的超參數(當fit_inverse_transform=True 時)。
- fit_inverse_transform:布爾,默認=假
學習非預計算內核的逆變換(即學習找到點的原像)。該方法基於[2]。
- eigen_solver:{‘auto’, ‘dense’, ‘arpack’, ‘randomized’},默認='自動'
選擇要使用的特征求解器。如果
n_components
遠小於訓練樣本的數量,則隨機化(或較小範圍的 arpack)可能比密集特征求解器更有效。隨機SVD按照Halko等人的方法進行[3]。- 汽車:
求解器由基於 n_samples(訓練樣本數)和
n_components
的默認策略選擇:如果要提取的組件數小於 10(嚴格)且樣本數大於 200(嚴格), ‘arpack’ 方法已啟用。否則,將計算精確的完整特征值分解並在之後選擇性地截斷(‘dense’ 方法)。- 稠密:
通過
scipy.linalg.eigh
調用標準 LAPACK 求解器運行精確的完整特征值分解,並通過後處理選擇組件- 包:
使用
scipy.sparse.linalg.eigsh
運行 SVD 截斷為 n_components 調用 ARPACK 求解器。它嚴格要求 0 < n_components < n_samples- 隨機:
按照 Halko 等人的方法運行隨機 SVD。 [3]。當前的實現根據模塊選擇特征值;因此,如果核不是半正定的,則使用此方法可能會導致意外結果。另見[4]。
- tol:浮點數,默認=0
arpack 的收斂容差。如果為 0,arpack 將選擇最優值。
- max_iter:整數,默認=無
arpack 的最大迭代次數。如果沒有,arpack 將選擇最佳值。
- iterated_power:int >= 0,或‘auto’,默認='auto'
由svd_solver == ‘randomized’ 計算的冪方法的迭代次數。 ‘auto’時,
n_components < 0.1 * min(X.shape)
時設置為7,其他設置為4。- remove_zero_eig:布爾,默認=假
如果為 True,則移除所有特征值為零的分量,因此輸出中的分量數可能小於 n_components(有時由於數值不穩定性甚至為零)。當 n_components 為 None 時,忽略此參數,並且無論如何都會刪除具有零特征值的組件。
- random_state:int、RandomState 實例或無,默認=無
當
eigen_solver
== ‘arpack’或‘randomized’時使用。傳遞 int 以獲得跨多個函數調用的可重現結果。請參閱術語表。- copy_X:布爾,默認=真
如果為 True,則模型將複製輸入 X 並將其存儲在
X_fit_
屬性中。如果不對 X 進行進一步更改,設置copy_X=False
通過存儲引用來節省內存。- n_jobs:整數,默認=無
要運行的並行作業數。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有處理器。有關詳細信息,請參閱詞匯表。
- eigenvalues_:ndarray 形狀 (n_components,)
以降序排列的中心核矩陣的特征值。如果未設置
n_components
和remove_zero_eig
,則存儲所有值。lambdas_
ndarray 形狀 (n_components,)已棄用:屬性
lambdas_
在版本 1.0 中已棄用,並將在 1.2 中刪除。- eigenvectors_:ndarray 形狀(n_samples,n_components)
中心核矩陣的特征向量。如果
n_components
和remove_zero_eig
未設置,則存儲所有組件。alphas_
ndarray 形狀(n_samples,n_components)已棄用:屬性
alphas_
在版本 1.0 中已棄用,並將在 1.2 中刪除。- dual_coef_:ndarray 形狀(n_samples,n_features)
逆變換矩陣。僅當
fit_inverse_transform
為 True 時可用。- X_transformed_fit_:ndarray 形狀(n_samples,n_components)
擬合數據在核主成分上的投影。僅當
fit_inverse_transform
為 True 時可用。- X_fit_:ndarray 形狀(n_samples,n_features)
用於擬合模型的數據。如果
copy_X=False
,則X_fit_
是參考。此屬性用於調用轉換。- n_features_in_:int
擬合期間看到的特征數。
- feature_names_in_:ndarray 形狀(
n_features_in_
,) 擬合期間看到的特征名稱。僅當
X
具有全為字符串的函數名稱時才定義。
參數:
屬性:
參考:
- 1
Schölkopf、Bernhard、Alexander Smola 和Klaus-Robert Müller。 “核主成分分析。”人工神經網絡國際會議。施普林格,柏林,海德堡,1997。
- 2
Bakır、Gökhan H.、Jason Weston 和 Bernhard Schölkopf。 “學習尋找原像。”神經信息處理係統的進展 16 (2004): 449-456。
- 3(1,2,3)
- 4
Martinsson、Per-Gunnar、Vladimir Rokhlin 和 Mark Tygert。 “矩陣分解的隨機算法。”應用和計算諧波分析 30.1 (2011): 47-68。
例子:
>>> from sklearn.datasets import load_digits >>> from sklearn.decomposition import KernelPCA >>> X, _ = load_digits(return_X_y=True) >>> transformer = KernelPCA(n_components=7, kernel='linear') >>> X_transformed = transformer.fit_transform(X) >>> X_transformed.shape (1797, 7)
相關用法
- Python sklearn KernelDensity用法及代碼示例
- Python sklearn KernelRidge用法及代碼示例
- Python sklearn KernelCenterer用法及代碼示例
- Python sklearn KBinsDiscretizer用法及代碼示例
- Python sklearn KNeighborsTransformer用法及代碼示例
- Python sklearn KNeighborsRegressor用法及代碼示例
- Python sklearn KNeighborsRegressor.kneighbors用法及代碼示例
- Python sklearn KDTree用法及代碼示例
- Python sklearn KNeighborsClassifier.kneighbors用法及代碼示例
- Python sklearn KNeighborsClassifier用法及代碼示例
- Python sklearn KNeighborsRegressor.kneighbors_graph用法及代碼示例
- Python sklearn KNeighborsClassifier.kneighbors_graph用法及代碼示例
- Python sklearn KNNImputer用法及代碼示例
- Python sklearn KNeighborsTransformer.kneighbors_graph用法及代碼示例
- Python sklearn KMeans用法及代碼示例
- Python sklearn KFold用法及代碼示例
- Python sklearn KNeighborsTransformer.kneighbors用法及代碼示例
- Python sklearn jaccard_score用法及代碼示例
- Python sklearn WhiteKernel用法及代碼示例
- Python sklearn CalibrationDisplay.from_predictions用法及代碼示例
- Python sklearn VotingRegressor用法及代碼示例
- Python sklearn gen_batches用法及代碼示例
- Python sklearn ExpSineSquared用法及代碼示例
- Python sklearn MDS用法及代碼示例
- Python sklearn adjusted_rand_score用法及代碼示例
注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.decomposition.KernelPCA。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。