umap-js:项目核心功能/场景

umap-js:项目核心功能/场景

umap-js JavaScript implementation of UMAP umap-js 项目地址: 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 版本相比,它有一些重要的不同点:

  1. 优化步骤的种子:在 JavaScript 版本中,优化步骤使用随机嵌入而不是谱嵌入,这在处理小数据集时可以得到相似的结果。谱嵌入的计算依赖于高效的特征值/特征向量的计算,这在 JavaScript 中难以实现。
  2. 缺少特定功能: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 的主要应用场景包括数据可视化、机器学习模型的特征提取和降维处理。以下是几个典型的应用场景:

  1. 数据可视化:通过将高维数据降维到2维或3维空间,可以帮助用户直观地理解数据的结构和分布。
  2. 特征提取:在机器学习模型训练之前,使用 umap-js 进行特征降维,可以减少计算复杂度并提高模型训练的效率。
  3. 图像和文本分析:在图像和自然语言处理领域,umap-js 可以用于降维处理,以便于后续的分析和模型构建。

项目特点

  1. 跨平台:umap-js 可以在多种 JavaScript 环境中运行,包括浏览器和 Node.js。
  2. 易于集成:可以作为模块轻松集成到现有的 JavaScript 项目中。
  3. 灵活配置:提供了丰富的配置选项,可以根据具体需求调整算法参数。
  4. 性能优化:针对 JavaScript 环境,对算法进行了优化,以提高执行效率和性能。

umap-js 是一个功能强大的非线性格式降维工具,适用于多种数据分析和可视化任务,是数据科学家和开发者的理想选择。通过其易于使用和高度可配置的特性,umap-js 可以帮助用户更好地理解复杂数据集。

umap-js JavaScript implementation of UMAP umap-js 项目地址: https://gitcode.com/gh_mirrors/um/umap-js

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

平樱玫Duncan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值