LocallyLinearEmbedding#
- class sklearn.manifold.LocallyLinearEmbedding(*, n_neighbors=5, n_components=2, reg=0.001, eigen_solver='auto', tol=1e-06, max_iter=100, method='standard', hessian_tol=0.0001, modified_tol=1e-12, neighbors_algorithm='auto', random_state=None, n_jobs=None)#
局部线性嵌入。
更多信息请参阅 用户指南 。
- Parameters:
- n_neighborsint, 默认=5
每个点要考虑的邻居数量。
- n_componentsint, 默认=2
流形的坐标数量。
- regfloat, 默认=1e-3
正则化常数,乘以距离的局部协方差矩阵的迹。
- eigen_solver{‘auto’, ‘arpack’, ‘dense’}, 默认=’auto’
用于计算特征向量的求解器。可用选项有:
'auto'
: 算法将尝试为输入数据选择最佳方法。'arpack'
: 在移位-反转型式中使用arnoldi迭代。对于此方法,M可以是稠密矩阵、稀疏矩阵或一般线性算子。'dense'
: 使用标准稠密矩阵运算进行特征值分解。对于此方法,M必须是数组或矩阵类型。对于大问题应避免使用此方法。
Warning
ARPACK对于某些问题可能不稳定。最好尝试几个随机种子以检查结果。
- tolfloat, 默认=1e-6
‘arpack’方法的容差 如果eigen_solver==’dense’,则不使用。
- max_iterint, 默认=100
arpack求解器的最大迭代次数。 如果eigen_solver==’dense’,则不使用。
- method{‘standard’, ‘hessian’, ‘modified’, ‘ltsa’}, 默认=’standard’
- hessian_tolfloat, 默认=1e-4
Hessian特征映射方法的容差。 仅在
method == 'hessian'
时使用。- modified_tolfloat, 默认=1e-12
改进的LLE方法的容差。 仅在
method == 'modified'
时使用。- neighbors_algorithm{‘auto’, ‘brute’, ‘kd_tree’, ‘ball_tree’}, 默认=’auto’
用于最近邻搜索的算法,传递给
NearestNeighbors
实例。- random_stateint, RandomState 实例, 默认=None
当
eigen_solver
== ‘arpack’ 时确定随机数生成器。传递一个int以在多次函数调用中获得可重复的结果。参见 术语 。- n_jobsint 或 None, 默认=None
并行运行的作业数量。
None
表示1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有处理器。参见 术语 了解更多详情。
- Attributes:
- embedding_array-like, shape [n_samples, n_components]
存储嵌入向量
- reconstruction_error_float
与
embedding_
相关的重构误差- n_features_in_int
在 fit 期间看到的特征数量。
Added in version 0.24.
- feature_names_in_ndarray of shape (
n_features_in_
,) 在 fit 期间看到的特征名称。仅当
X
的特征名称均为字符串时定义。Added in version 1.0.
- nbrs_NearestNeighbors 对象
存储最近邻实例,包括BallTree或KDtree(如果适用)。
See also
SpectralEmbedding
用于非线性降维的谱嵌入。
TSNE
分布式随机邻居嵌入。
References
[1]Roweis, S. & Saul, L. 通过局部线性嵌入进行非线性降维。 Science 290:2323 (2000).
[2]Donoho, D. & Grimes, C. Hessian特征映射:用于高维数据的局部线性嵌入技术。 Proc Natl Acad Sci U S A. 100:5591 (2003).
[4]Zhang, Z. & Zha, H. 主流形和通过切空间对齐的非线性降维。 Journal of Shanghai Univ. 8:406 (2004)
Examples
>>> from sklearn.datasets import load_digits >>> from sklearn.manifold import LocallyLinearEmbedding >>> X, _ = load_digits(return_X_y=True) >>> X.shape (1797, 64) >>> embedding = LocallyLinearEmbedding(n_components=2) >>> X_transformed = embedding.fit_transform(X[:100]) >>> X_transformed.shape (100, 2)
- fit(X, y=None)#
计算数据X的嵌入向量。
- Parameters:
- X形状为 (n_samples, n_features) 的类数组
训练集。
- y忽略
未使用,为了保持API一致性而存在。
- Returns:
- selfobject
已拟合的
LocallyLinearEmbedding
类实例。
- fit_transform(X, y=None)#
计算数据X的嵌入向量并转换X。
- Parameters:
- X形状为 (n_samples, n_features) 的类数组
训练集。
- y忽略
未使用,为了保持API一致性而存在。
- Returns:
- X_new类数组,形状为 (n_samples, n_components)
返回实例本身。
- get_feature_names_out(input_features=None)#
获取转换后的输出特征名称。
输出特征名称将以小写的类名作为前缀。例如,如果转换器输出3个特征,那么输出特征名称将是:
["class_name0", "class_name1", "class_name2"]
。- Parameters:
- input_features类似数组的对象或None,默认为None
仅用于验证特征名称与
fit
中看到的名称。
- Returns:
- feature_names_outndarray of str对象
转换后的特征名称。
- get_metadata_routing()#
获取此对象的元数据路由。
请查看 用户指南 以了解路由机制的工作原理。
- Returns:
- routingMetadataRequest
MetadataRequest
封装的 路由信息。
- get_params(deep=True)#
获取此估计器的参数。
- Parameters:
- deepbool, 默认=True
如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。
- Returns:
- paramsdict
参数名称映射到它们的值。
- set_output(*, transform=None)#
设置输出容器。
请参阅 介绍 set_output API 以了解如何使用API的示例。
- Parameters:
- transform{“default”, “pandas”, “polars”}, 默认=None
配置
transform
和fit_transform
的输出。"default"
: 转换器的默认输出格式"pandas"
: DataFrame 输出"polars"
: Polars 输出None
: 转换配置不变
Added in version 1.4:
"polars"
选项已添加。
- Returns:
- self估计器实例
估计器实例。
- set_params(**params)#
设置此估计器的参数。
该方法适用于简单估计器以及嵌套对象(例如
Pipeline
)。后者具有形式为<component>__<parameter>
的参数,以便可以更新嵌套对象的每个组件。- Parameters:
- **paramsdict
估计器参数。
- Returns:
- selfestimator instance
估计器实例。
- transform(X)#
将新点转换到嵌入空间。
- Parameters:
- X形状为 (n_samples, n_features) 的类数组
训练集。
- Returns:
- X_new形状为 (n_samples, n_components) 的 ndarray
返回实例本身。
Notes
由于此方法执行的缩放,不鼓励将其与不具有尺度不变性的方法(如SVM)一起使用。