umap-js:项目核心功能/场景
umap-js JavaScript implementation of UMAP 项目地址: https://gitcode.com/gh_mirrors/um/umap-js
将Python中的UMAP算法移植到JavaScript环境中,实现非线性的维度降低技术。
项目介绍
umap-js 是一个基于 JavaScript 实现的 UMAP 算法版本,原始算法是 Python 编写的,可以在 PAIR-code/umap 找到。UMAP(Uniform Manifold Approximation and Projection)是一种维度降低技术,适用于数据可视化以及非线性维度降低任务,类似于 t-SNE,但提供了更广泛的应用。
项目技术分析
umap-js 主要是为了在 JavaScript 环境中使用 UMAP 算法而设计的,与 Python 版本相比,它有一些重要的不同点:
- 优化步骤的种子:在 JavaScript 版本中,优化步骤使用随机嵌入而不是谱嵌入,这在处理小数据集时可以得到相似的结果。谱嵌入的计算依赖于高效的特征值/特征向量的计算,这在 JavaScript 中难以实现。
- 缺少特定功能:umap-js 没有为角度距离或稀疏数据表示提供专门的函数。
使用方法
安装
通过 Yarn 安装 umap-js:
yarn add umap-js
同步拟合
import { UMAP } from 'umap-js';
const umap = new UMAP();
const embedding = umap.fit(data);
异步拟合
import { UMAP } from 'umap-js';
const umap = new UMAP();
const embedding = await umap.fitAsync(data, epochNumber => {
// 检查进度并向用户提供反馈,或者返回 `false` 以停止
});
分步骤拟合
import { UMAP } from 'umap-js';
const umap = new UMAP();
const nEpochs = umap.initializeFit(data);
for (let i = 0; i < nEpochs; i++) {
umap.step();
}
const embedding = umap.getEmbedding();
使用标签进行监督投影
import { UMAP } from 'umap-js';
const umap = new UMAP();
umap.setSupervisedProjection(labels);
const embedding = umap.fit(data);
拟合后的数据转换
import { UMAP } from 'umap-js';
const umap = new UMAP();
umap.fit(data);
const transformed = umap.transform(additionalData);
参数配置
UMAP 构造函数接受一个 UMAPParameters
对象,包含多个超参数,以下是一些常见的参数:
| 参数 | 描述 | 默认值 | | ------------ | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | | nComponents
| 投影数据到的组件(维度)数 | 2 | | nEpochs
| 通过 SGD 优化嵌入的迭代次数 | (自动计算) | | nNeighbors
| 构建模糊流形时最近的邻居数 | 15 | | minDist
| 嵌入点之间的有效最小距离,与 spread
配合使用以控制嵌入的紧凑/分散性质 | 0.1 | | spread
| 嵌入点的有效尺度,与 minDist
配合使用以控制嵌入的紧凑/分散性质 | 1.0 | | random
| 控制随机过程的伪随机数生成器 | Math.random
| | distanceFn
| 自定义距离函数 | euclidean
|
const umap = new UMAP({
nComponents: 2,
nEpochs: 400,
nNeighbors: 15,
});
项目及技术应用场景
umap-js 的主要应用场景包括数据可视化、机器学习模型的特征提取和降维处理。以下是几个典型的应用场景:
- 数据可视化:通过将高维数据降维到2维或3维空间,可以帮助用户直观地理解数据的结构和分布。
- 特征提取:在机器学习模型训练之前,使用 umap-js 进行特征降维,可以减少计算复杂度并提高模型训练的效率。
- 图像和文本分析:在图像和自然语言处理领域,umap-js 可以用于降维处理,以便于后续的分析和模型构建。
项目特点
- 跨平台:umap-js 可以在多种 JavaScript 环境中运行,包括浏览器和 Node.js。
- 易于集成:可以作为模块轻松集成到现有的 JavaScript 项目中。
- 灵活配置:提供了丰富的配置选项,可以根据具体需求调整算法参数。
- 性能优化:针对 JavaScript 环境,对算法进行了优化,以提高执行效率和性能。
umap-js 是一个功能强大的非线性格式降维工具,适用于多种数据分析和可视化任务,是数据科学家和开发者的理想选择。通过其易于使用和高度可配置的特性,umap-js 可以帮助用户更好地理解复杂数据集。
umap-js JavaScript implementation of UMAP 项目地址: https://gitcode.com/gh_mirrors/um/umap-js
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考