截短的奇异值#
- class sklearn.decomposition.TruncatedSVD(n_components=2, *, algorithm='randomized', n_iter=5, n_oversamples=10, power_iteration_normalizer='auto', random_state=None, tol=0.0)[源代码]#
使用截断的SVD(又名LSA)进行简化。
该Transformer通过截断奇异值分解(SVD)进行线性降维。与PCA相反,该估计器在计算奇异值分解之前不会对数据进行中心化。这意味着它可以有效地处理稀疏矩阵。
特别是,截断的MVD适用于中的向量器返回的项计数/tf-idf矩阵
sklearn.feature_extraction.text
.在这种情况下,它被称为潜在语义分析(LSA)。该估计器支持两种算法:快速随机化的DID解算器,以及使用ARPACK作为特征解算器的“天真”算法
X * X.T
或X.T * X
,以效率更高的为准。阅读更多的 User Guide .
- 参数:
- n_componentsint,默认=2
输出数据的所需维度。如果algorithm ='arpack',则必须严格小于特征数。如果algorithm ='randomized',则必须小于或等于特征数。默认值对于可视化非常有用。对于LSA,建议值为100。
- algorithm'arpack','randomized'},default='randomized'
要使用的奇异值解算器。SciPy(scipy.sparse.linalg.svds)中的ARPACK包装器为“arpack”,或者由于Halko(2009),随机算法为“随机化”。
- n_iterint,默认=5
随机SVD求解器的迭代次数。ARPACK未使用。中的默认值大于
randomized_svd
以处理可能具有大的缓慢衰减频谱的稀疏矩阵。- n_oversamplesint,默认值=10
随机化MVD求解器的过样本数量。ARPACK未使用。看到
randomized_svd
以获取完整的描述。Added in version 1.1.
- power_iteration_normalizer' Auto ',' QR ',' LU ',
随机SVD求解器的幂迭代归一化器。ARPACK未使用。看到
randomized_svd
了解更多详细信息。Added in version 1.1.
- random_stateint,RandomState实例或无,默认=无
在随机svd期间使用。传递int以获得跨多个函数调用的可重复结果。看到 Glossary .
- tolfloat,默认=0.0
对ARPACK的容忍。0表示机器精度。被随机的DID解算器忽视。
- 属性:
- components_ndrow形状数组(n_components,n_features)
输入数据的右奇异向量。
- explained_variance_形状的nd数组(n_components,)
通过投影转换到每个分量的训练样本的方差。
- explained_variance_ratio_形状的nd数组(n_components,)
每个选定成分解释的方差百分比。
- singular_values_形状的nd数组(n_components,)
The singular values corresponding to each of the selected components. The singular values are equal to the 2-norms of the
n_components
variables in the lower-dimensional space.- n_features_in_int
期间看到的功能数量 fit .
Added in version 0.24.
- feature_names_in_ :nd形状数组 (
n_features_in_
,)nd数组形状( Names of features seen during fit. Defined only when
X
has feature names that are all strings.Added in version 1.0.
参见
DictionaryLearning
找一个对数据进行稀疏编码的字典。
FactorAnalysis
一个简单的线性生成模型与高斯潜变量。
IncrementalPCA
增量主成分分析。
KernelPCA
核心主成分分析。
NMF
非负矩阵分解。
PCA
主成分分析。
注意到
DDD存在一个称为“符号不确定性”的问题,这意味着符号
components_
变换的输出取决于算法和随机状态。要解决这个问题,请将此类的实例与数据匹配一次,然后保留该实例以执行转换。引用
示例
>>> 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...]
- fit(X, y=None)[源代码]#
将模型与训练数据X匹配。
- 参数:
- X形状(n_samples,n_features)的{类数组,稀疏矩阵}
训练数据。
- y忽视
未使用,此处列出是为了按照惯例实现API一致性。
- 返回:
- self对象
返回Transformer对象。
- fit_transform(X, y=None)[源代码]#
将模型与X匹配并对X进行降维。
- 参数:
- X形状(n_samples,n_features)的{类数组,稀疏矩阵}
训练数据。
- y忽视
未使用,此处列出是为了按照惯例实现API一致性。
- 返回:
- X_new形状的nd数组(n_samples,n_components)
X的简化版本。这将始终是一个密集阵列。
- get_feature_names_out(input_features=None)[源代码]#
获取用于转换的输出要素名称。
输出的功能名称将以大写的类别名称为开头。例如,如果Transformer输出3个特征,则输出的特征名称为:
["class_name0", "class_name1", "class_name2"]
.- 参数:
- input_features字符串或无的类数组,默认=无
仅用于通过中看到的名称验证要素名称
fit
.
- 返回:
- feature_names_out字符串对象的nd数组
转换的功能名称。
- get_metadata_routing()[源代码]#
获取此对象的元数据路由。
请检查 User Guide 关于路由机制如何工作。
- 返回:
- routingMetadataRequest
A
MetadataRequest
封装路由信息。
- get_params(deep=True)[源代码]#
获取此估计器的参数。
- 参数:
- deep布尔,默认=True
如果为True,将返回此估计量和包含的作为估计量的子对象的参数。
- 返回:
- paramsdict
参数名称映射到其值。
- inverse_transform(X)[源代码]#
将X转换回其原始空间。
返回一个数组X_original,其变换为X。
- 参数:
- X形状类似阵列(n_samples,n_components)
New data.
- 返回:
- X_original形状的nd数组(n_samples,n_features)
请注意,这始终是一个密集数组。
- set_output(*, transform=None)[源代码]#
设置输出容器。
看到 介绍 set_output API 了解如何使用API的示例。
- 参数:
- transform{“默认”,“pandas”,“polars”},默认=无
配置输出
transform
和fit_transform
."default"
:Transformer的默认输出格式"pandas"
:DataFrame输出"polars"
:两极输出None
:转换配置不变
Added in version 1.4:
"polars"
添加了选项。
- 返回:
- self估计器实例
估计实例。