局部线性嵌入#
- 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)[source]#
局部线性嵌入。
更多信息请参考 用户指南。
- 参数:
- n_neighborsint,默认为5
每个点考虑的邻居数量。
- n_componentsint,默认为2
流形的坐标数量。
- regfloat,默认为1e-3
正则化常数,乘以距离的局部协方差矩阵的迹。
- eigen_solver{'auto', 'arpack', 'dense'},默认为'auto'
用于计算特征向量的求解器。可用的选项为:
'auto'
:算法将尝试为输入数据选择最佳方法。'arpack'
:使用移位反转模式下的Arnoldi迭代。对于此方法,M可以是稠密矩阵、稀疏矩阵或一般的线性算子。'dense'
:使用标准稠密矩阵运算进行特征值分解。对于此方法,M必须是数组或矩阵类型。对于大型问题,应避免使用此方法。
警告
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' 时确定随机数生成器。传递一个整数以在多次函数调用中获得可重复的结果。参见 Glossary。- n_jobsint 或 None,默认为 None
要运行的并行作业数。
None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有处理器。有关更多详细信息,请参见 Glossary。
- 属性:
- embedding_类数组,形状 [n_samples, n_components]
存储嵌入向量。
- reconstruction_error_float
与
embedding_
相关的重构误差。- n_features_in_int
在 fit 期间看到的特征数量。
在 0.24 版本中添加。
- feature_names_in_形状为 (
n_features_in_
,) 的 ndarray 在 fit 期间看到的特征名称。仅当
X
的特征名称全部为字符串时定义。在 1.0 版本中添加。
- nbrs_NearestNeighbors 对象
存储最近邻实例,包括 BallTree 或 KDtree(如果适用)。
另请参见
SpectralEmbedding
用于非线性降维的谱嵌入。
TSNE
分布式随机邻域嵌入。
参考文献
[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)
示例
>>> 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)[source]#
计算数据 X 的嵌入向量。
- 参数:
- X形状为 (n_samples, n_features) 的类数组
训练集。
- y忽略
未使用,此处出于 API 一致性约定而保留。
- 返回:
- self对象
已拟合的
LocallyLinearEmbedding
类实例。
- fit_transform(X, y=None)[source]#
计算数据 X 的嵌入向量并转换 X。
- 参数:
- X形状为 (n_samples, n_features) 的类数组
训练集。
- y忽略
未使用,此处出于 API 一致性约定而保留。
- 返回:
- X_new类数组,形状 (n_samples, n_components)
返回实例本身。
- get_feature_names_out(input_features=None)[source]#
获取转换后的特征名称。
输出的特征名称将以小写的类名作为前缀。例如,如果转换器输出3个特征,则输出的特征名称为:
["class_name0", "class_name1", "class_name2"]
。- 参数:
- input_features类数组的字符串或None,默认为None
仅用于使用在
fit
中看到的名称验证特征名称。
- 返回:
- feature_names_out字符串对象的ndarray
转换后的特征名称。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查看用户指南,了解路由机制的工作原理。
- 返回:
- routingMetadataRequest
一个
MetadataRequest
,封装了路由信息。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deep布尔值,默认为True
如果为True,则将返回此估计器和包含的作为估计器的子对象的参数。
- 返回:
- params字典
参数名称与其值的映射。
- set_output(*, transform=None)[source]#
设置输出容器。
请参阅介绍set_output API,了解如何使用此API。
- 参数:
- transform{"default", "pandas", "polars"},默认为None
配置
transform
和fit_transform
的输出。"default"
: 变换器的默认输出格式"pandas"
: DataFrame输出"polars"
: Polars输出None
: 转换配置保持不变
版本 1.4 中新增:
"polars"
选项已添加。
- 返回:
- self估计器实例
估计器实例。