[ PROMPT_NODE_27532 ]
umap-learn
[ SKILL_DOCUMENTATION ]
# UMAP-Learn
## 概述
UMAP (Uniform Manifold Approximation and Projection) 是一种用于可视化和通用非线性降维的技术。应用此技能可实现快速、可扩展的嵌入,同时保留局部和全局结构,适用于监督学习和聚类预处理。
## 快速入门
### 安装
bash
uv pip install umap-learn
### 基本用法
UMAP 遵循 scikit-learn 约定,可作为 t-SNE 或 PCA 的直接替代品。
python
import umap
from sklearn.preprocessing import StandardScaler
# 准备数据(标准化至关重要)
scaled_data = StandardScaler().fit_transform(data)
# 方法 1:单步执行(拟合并转换)
embedding = umap.UMAP().fit_transform(scaled_data)
# 方法 2:分步执行(用于重用已训练模型)
reducer = umap.UMAP(random_state=42)
reducer.fit(scaled_data)
embedding = reducer.embedding_ # 访问已训练的嵌入
**关键预处理要求:** 在应用 UMAP 之前,务必将特征标准化到可比较的尺度,以确保各维度权重相等。
### 典型工作流
python
import umap
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
# 1. 数据预处理
scaler = StandardScaler()
scaled_data = scaler.fit_transform(raw_data)
# 2. 创建并拟合 UMAP
reducer = umap.UMAP(
n_neighbors=15,
min_dist=0.1,
n_components=2,
metric='euclidean',
random_state=42
)
embedding = reducer.fit_transform(scaled_data)
# 3. 可视化
plt.scatter(embedding[:, 0], embedding[:, 1], c=labels, cmap='Spectral', s=5)
plt.colorbar()
plt.title('UMAP 嵌入')
plt.show()
## 参数调优指南
UMAP 有四个主要参数控制嵌入行为。理解这些参数对于有效使用至关重要。
### n_neighbors(默认值:15)
**目的:** 平衡嵌入中的局部与全局结构。
**工作原理:** 控制 UMAP 在学习流形结构时检查的局部邻域大小。
**不同取值的影响:**
- **低值 (2-5):** 强调精细的局部细节,但可能将数据碎片化为不连通的组件
- **中值 (15-20):** 局部结构与全局关系的平衡视图(推荐起始点)
- **高值 (50-200):** 优先考虑广泛的拓扑结构,但会牺牲精细细节
**建议:** 从 15 开始,并根据结果进行调整。增加该值以获得更全局的结