當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python sklearn KernelPCA用法及代碼示例


本文簡要介紹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 內核的內核係數。被其他內核忽略。如果 gammaNone ,則將其設置為 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_powerint >= 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_stateint、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_componentsremove_zero_eig,則存儲所有值。

lambdas_ndarray 形狀 (n_components,)

已棄用:屬性 lambdas_ 在版本 1.0 中已棄用,並將在 1.2 中刪除。

eigenvectors_ndarray 形狀(n_samples,n_components)

中心核矩陣的特征向量。如果n_componentsremove_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)

Halko、Nathan、Per-Gunnar Martinsson 和 Joel A. Tropp。 “尋找具有隨機性的結構:構造近似矩陣分解的概率算法。”暹羅評論 53.2 (2011): 217-288。

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)

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.decomposition.KernelPCA。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。