You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用sklearn.manifold Isomap如何获取特征值及组件权重?

Isomap降维:组件权重与特征值的获取问题

首先明确:sklearn的Isomap实现并没有直接提供“组件权重”(即原始特征对降维后组件的贡献系数),因为Isomap属于非线性流形学习方法,其降维逻辑和PCA这类线性降维完全不同——它是基于数据的测地距离而非原始特征的线性组合来完成降维的。

关于特征值:Isomap内部通过经典MDS完成最终的降维,这个过程会涉及特征值分解,但sklearn没有把特征值暴露为Isomap对象的属性。不过你可以通过手动计算来提取特征值,步骤如下:

手动提取Isomap降维对应的特征值

利用Isomap训练后得到的测地距离矩阵,按照经典MDS的步骤计算特征值:

import numpy as np
from sklearn.manifold import Isomap

# 你的原有代码
embedding = Isomap(n_components=4, n_neighbors=6)
X_transformed = embedding.fit_transform(X)

# 获取Isomap计算出的测地距离矩阵
geodesic_dist = embedding.dist_matrix_

# 经典MDS特征值计算步骤
n_samples = geodesic_dist.shape[0]
# 构建中心化矩阵
centering_mat = np.eye(n_samples) - np.ones((n_samples, n_samples)) / n_samples
# 计算中心化后的内积矩阵
inner_product_mat = -0.5 * centering_mat @ geodesic_dist**2 @ centering_mat
# 特征值分解
eigenvalues, eigenvectors = np.linalg.eigh(inner_product_mat)

# 按特征值从大到小排序(MDS取最大的k个特征值对应降维组件)
sorted_idx = np.argsort(eigenvalues)[::-1]
sorted_eigenvalues = eigenvalues[sorted_idx]

# 提取对应你设置的4个组件的特征值
top4_eigenvalues = sorted_eigenvalues[:4]
print("降维后4个组件对应的特征值:", top4_eigenvalues)

关于“组件权重”的说明

Isomap的降维结果不是原始特征的线性组合,因此不存在类似PCA中components_那样的权重系数。它的核心是先通过近邻图拟合数据的流形结构,再将测地距离映射到低维空间,整个过程没有直接关联原始特征与降维组件的线性权重。

内容的提问来源于stack exchange,提问作者SHUKRI ABDUALAZEZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 01:18:19