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


Python sklearn IncrementalPCA用法及代碼示例


本文簡要介紹python語言中 sklearn.decomposition.IncrementalPCA 的用法。

用法:

class sklearn.decomposition.IncrementalPCA(n_components=None, *, whiten=False, copy=True, batch_size=None)

增量主成分分析(IPCA)。

使用數據的奇異值分解進行線性降維,僅保留最重要的奇異向量以將數據投影到較低維空間。在應用 SVD 之前,輸入數據居中,但未針對每個特征進行縮放。

根據輸入數據的大小,該算法的內存效率可能比 PCA 高得多,並且允許稀疏輸入。

該算法具有恒定的內存複雜度,約為 batch_size * n_features ,允許使用 np.memmap 文件,而無需將整個文件加載到內存中。對於稀疏矩陣,輸入會批量轉換為稠密矩陣(以便能夠減去平均值),這避免了在任何一次存儲整個稠密矩陣。

每個 SVD 的計算開銷為 O(batch_size * n_features ** 2) ,但一次隻保留 2 * batch_size 個樣本在內存中。將有 n_samples / batch_size SVD 計算來獲得主成分,而 PCA 需要 1 個複雜的大 SVD O(n_samples * n_features ** 2)

在用戶指南中閱讀更多信息。

參數

n_components整數,默認=無

要保留的組件數。如果 n_componentsNone ,則 n_components 設置為 min(n_samples, n_features)

whiten布爾,默認=假

當 True(默認為 False)時,components_ 向量除以 n_samples 乘以 components_ 以確保輸出與單位 component-wise 方差不相關。

白化會從轉換後的信號中刪除一些信息(分量的相對方差尺度),但有時可以通過使數據尊重一些hard-wired假設來提高下遊估計器的預測準確性。

copy布爾,默認=真

如果為 False,X 將被覆蓋。 copy=False 可用於節省內存,但一般使用不安全。

batch_size整數,默認=無

每批要使用的樣本數。僅在調用 fit 時使用。如果 batch_sizeNone ,則從數據中推斷出 batch_size 並將其設置為 5 * n_features ,以在近似精度和內存消耗之間取得平衡。

屬性

components_ndarray 形狀(n_components,n_features)

特征空間中的主軸,表示數據中最大方差的方向。等效地,居中輸入數據的右奇異向量與其特征向量平行。組件按 explained_variance_ 排序。

explained_variance_ndarray 形狀 (n_components,)

每個選定組件解釋的方差。

explained_variance_ratio_ndarray 形狀 (n_components,)

每個選定組件解釋的方差百分比。如果存儲了所有分量,則解釋方差之和等於 1.0。

singular_values_ndarray 形狀 (n_components,)

對應於每個選定組件的奇異值。奇異值等於 lower-dimensional 空間中 n_components 變量的 2 範數。

mean_ndarray 形狀 (n_features,)

Per-feature 經驗平均值,匯總對 partial_fit 的調用。

var_ndarray 形狀 (n_features,)

Per-feature 經驗方差,匯總對 partial_fit 的調用。

noise_variance_浮點數

根據 Tipping 和 Bishop 1999 的概率 PCA 模型估計的噪聲協方差。參見 C. Bishop 的“模式識別和機器學習”,第 12.2.1 頁。 574 或 http://www.miketipping.com/papers/met-mppca.pdf

n_components_int

組件的估計數量。相關時 n_components=None

n_samples_seen_int

估計器處理的樣本數。將在新調用時重置以適應,但在 partial_fit 調用中遞增。

batch_size_int

batch_size 推斷的批量大小。

n_features_in_int

擬合期間看到的特征數。

feature_names_in_ndarray 形狀(n_features_in_,)

擬合期間看到的特征名稱。僅當 X 具有全為字符串的函數名稱時才定義。

注意

從以下位置實現增量 PCA 模型:D. Ross、J. Lim、R. Lin、M. Yang,用於魯棒視覺跟蹤的增量學習,國際計算機視覺雜誌,第 77 卷,第 1-3 期,第 125-141 頁,2008 年 5 月。參看https://www.cs.toronto.edu/~dross/ivt/RossLimLinYang_ijcv.pdf

該模型是順序 Karhunen-Loeve 變換的擴展,來自:A. Levy 和 M. Lindenbaum,Sequential Karhunen-Loeve Basis Extraction and its Application to Images,IEEE Transactions on Image Processing,第 9 卷,第 8 期,第 1371-1374 頁,2000 年 8 月。參看https://www.cs.technion.ac.il/~mic/doc/skl-ip.pdf

我們特別放棄了兩篇論文的作者使用的優化,在特定情況下使用 QR 分解來降低 SVD 的算法複雜性。這種技術的來源是矩陣計算,第三版,G. Holub 和 C. Van Loan,第 5 章,第 5.4.4 節,第 252-253 頁。.該技術已被省略,因為它僅在分解矩陣時具有優勢n_samples(行) >= 5/3 *n_features(列),並損害所實現算法的可讀性。如果認為有必要,這將是未來優化的好機會。

參考

D. 羅斯、J. Lim、R. Lin、M. Yang。 Incremental Learning for Robust Visual Tracking,國際計算機視覺雜誌,第 77 卷,第 1-3 期,第 125-141 頁,2008 年 5 月。

G. Golub 和 C. Van Loan。矩陣計算,第三版,第 5 章,第 5.4.4 節,第 252-253 頁。

例子

>>> from sklearn.datasets import load_digits
>>> from sklearn.decomposition import IncrementalPCA
>>> from scipy import sparse
>>> X, _ = load_digits(return_X_y=True)
>>> transformer = IncrementalPCA(n_components=7, batch_size=200)
>>> # either partially fit on smaller batches of data
>>> transformer.partial_fit(X[:100, :])
IncrementalPCA(batch_size=200, n_components=7)
>>> # or let the fit function itself divide the data into batches
>>> X_sparse = sparse.csr_matrix(X)
>>> X_transformed = transformer.fit_transform(X_sparse)
>>> X_transformed.shape
(1797, 7)

相關用法


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