本文簡要介紹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 個複雜的大 SVDO(n_samples * n_features ** 2)
。在用戶指南中閱讀更多信息。
- n_components:整數,默認=無
要保留的組件數。如果
n_components
是None
,則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_size
是None
,則從數據中推斷出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)
相關用法
- Python sklearn IncrementalPCA.transform用法及代碼示例
- Python sklearn IsolationForest用法及代碼示例
- Python sklearn IsotonicRegression用法及代碼示例
- Python sklearn Isomap用法及代碼示例
- Python sklearn IterativeImputer用法及代碼示例
- 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用法及代碼示例
- Python sklearn MLPClassifier用法及代碼示例
- Python sklearn train_test_split用法及代碼示例
- Python sklearn RandomTreesEmbedding用法及代碼示例
- Python sklearn GradientBoostingRegressor用法及代碼示例
- Python sklearn GridSearchCV用法及代碼示例
- Python sklearn log_loss用法及代碼示例
- Python sklearn r2_score用法及代碼示例
- Python sklearn ndcg_score用法及代碼示例
- Python sklearn ShrunkCovariance用法及代碼示例
- Python sklearn SelfTrainingClassifier用法及代碼示例
- Python sklearn load_svmlight_file用法及代碼示例
- Python sklearn make_pipeline用法及代碼示例
注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.decomposition.IncrementalPCA。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。