本文简要介绍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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。