本文简要介绍python语言中 sklearn.decomposition.TruncatedSVD
的用法。
用法:
class sklearn.decomposition.TruncatedSVD(n_components=2, *, algorithm='randomized', n_iter=5, random_state=None, tol=0.0)
使用截断的 SVD(又名 LSA)进行降维。
该转换器通过截断奇异值分解 (SVD) 执行线性降维。与 PCA 不同,此估计器在计算奇异值分解之前不会将数据居中。这意味着它可以有效地处理稀疏矩阵。
特别是,截断的 SVD 适用于由
sklearn.feature_extraction.text
中的矢量化器返回的术语计数/tf-idf 矩阵。在这种情况下,它被称为潜在语义分析(LSA)。此估计器支持两种算法:快速随机 SVD 求解器和 “naive” 算法,该算法使用 ARPACK 作为
X * X.T
或X.T * X
上的特征值求解器,以更有效者为准。在用户指南中阅读更多信息。
- n_components:整数,默认=2
输出数据的所需维度。必须严格小于特征数。默认值对可视化很有用。对于 LSA,建议值为 100。
- algorithm:{‘arpack’, ‘randomized’},默认='随机'
要使用的 SVD 求解器。 “arpack” 用于 SciPy (scipy.sparse.linalg.svds) 中的 ARPACK 包装器,或者 “randomized” 用于 Halko (2009) 的随机算法。
- n_iter:整数,默认=5
随机 SVD 求解器的迭代次数。 ARPACK 不使用。默认值大于
randomized_svd
中的默认值,以处理可能具有大的缓慢衰减频谱的稀疏矩阵。- random_state:int、RandomState 实例或无,默认=无
在随机 svd 期间使用。传递 int 以获得跨多个函数调用的可重现结果。请参阅术语表。
- tol:浮点数,默认=0.0
ARPACK 的容差。 0 表示机器精度。被随机 SVD 求解器忽略。
- components_:ndarray 形状(n_components,n_features)
输入数据的右奇异向量。
- explained_variance_:ndarray 形状 (n_components,)
通过投影变换到每个分量的训练样本的方差。
- explained_variance_ratio_:ndarray 形状 (n_components,)
每个选定组件解释的方差百分比。
- singular_values_:ndarray od 形状(n_components,)
对应于每个选定组件的奇异值。奇异值等于 lower-dimensional 空间中
n_components
变量的 2 范数。- n_features_in_:int
拟合期间看到的特征数。
- feature_names_in_:ndarray 形状(
n_features_in_
,) 拟合期间看到的特征名称。仅当
X
具有全为字符串的函数名称时才定义。
参数:
属性:
注意:
SVD 遇到一个称为“sign indeterminacy” 的问题,这意味着
components_
的符号和变换的输出取决于算法和随机状态。要解决此问题,请将此类的实例与数据匹配一次,然后保留该实例以进行转换。参考:
寻找具有随机性的结构:构建近似矩阵分解的随机算法 Halko 等人,2009 (arXiv:909) https://arxiv.org/pdf/0909.4061.pdf
例子:
>>> from sklearn.decomposition import TruncatedSVD >>> from scipy.sparse import csr_matrix >>> import numpy as np >>> np.random.seed(0) >>> X_dense = np.random.rand(100, 100) >>> X_dense[:, 2 * np.arange(50)] = 0 >>> X = csr_matrix(X_dense) >>> svd = TruncatedSVD(n_components=5, n_iter=7, random_state=42) >>> svd.fit(X) TruncatedSVD(n_components=5, n_iter=7, random_state=42) >>> print(svd.explained_variance_ratio_) [0.0157... 0.0512... 0.0499... 0.0479... 0.0453...] >>> print(svd.explained_variance_ratio_.sum()) 0.2102... >>> print(svd.singular_values_) [35.2410... 4.5981... 4.5420... 4.4486... 4.3288...]
相关用法
- Python sklearn TransformedTargetRegressor用法及代码示例
- Python sklearn TweedieRegressor用法及代码示例
- Python sklearn TSNE用法及代码示例
- Python sklearn TfidfVectorizer用法及代码示例
- Python sklearn TheilSenRegressor用法及代码示例
- Python sklearn TfidfTransformer用法及代码示例
- Python sklearn TimeSeriesSplit用法及代码示例
- 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用法及代码示例
注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.decomposition.TruncatedSVD。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。