Skip to content

@saehrimnir/druidjs / UMAP

Class: UMAP<T>

Defined in: dimred/UMAP.js:48

Uniform Manifold Approximation and Projection (UMAP)

A novel manifold learning technique for dimensionality reduction. UMAP is constructed from a theoretical framework based on Riemannian geometry and algebraic topology. It is often faster than t-SNE while preserving more of the global structure.

A given seed reproduces an embedding exactly within one engine and library build, but not across browsers or Node versions: the gradient descent is chaotic, so a last-bit difference grows into a visibly different — though equally valid — layout. See DR for why.

Template

T

See

  • Paper
  • TSNE for a similar visualization technique

Example

ts
import * as druid from "@saehrimnir/druidjs";

const X = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]];
const umap = new druid.UMAP(X, {
    n_neighbors: 15,
    min_dist: 0.1,
    d: 2,
    seed: 42
});

const Y = umap.transform(500); // 500 iterations
// [[x1, y1], [x2, y2], [x3, y3]]

Extends

  • DR

Type Parameters

Type ParameterDescription
T extends InputType

Constructors

Constructor

ts
new UMAP<T>(X: T, parameters?: Partial<ParametersUMAP>): UMAP<T>;

Defined in: dimred/UMAP.js:58

Parameters

ParameterTypeDescription
XTThe high-dimensional data.
parameters?Partial<ParametersUMAP>Object containing parameterization of the DR method.

Returns

UMAP<T>

Overrides

ts
DR.constructor

Properties

PropertyTypeInherited fromDefined in
__inputTDR.__inputdimred/DR.js:46
_anumber | undefined-dimred/UMAP.js:356
_alphanumber | undefined-dimred/UMAP.js:591
_bnumber | undefined-dimred/UMAP.js:357
_DnumberDR._Ddimred/DR.js:28
_epoch_of_next_negative_sampleFloat32Array<ArrayBuffer> | undefined-dimred/UMAP.js:366
_epoch_of_next_sampleFloat32Array<ArrayBuffer> | undefined-dimred/UMAP.js:365
_epochs_per_negative_sampleFloat32Array<ArrayBuffer> | undefined-dimred/UMAP.js:364
_epochs_per_sampleFloat32Array<ArrayBufferLike> | undefined-dimred/UMAP.js:363
_graphMatrix | undefined-dimred/UMAP.js:358
_headnumber[] | undefined-dimred/UMAP.js:360
_head_int32Int32Array<ArrayBuffer> | undefined-dimred/UMAP.js:545
_is_initializedbooleanDR._is_initializeddimred/DR.js:34
_iternumber-dimred/UMAP.js:94
_NnumberDR._Ndimred/DR.js:30
_parametersParametersUMAPDR._parametersdimred/DR.js:49
_randomizerRandomizerDR._randomizerdimred/DR.js:32
_tailnumber[] | undefined-dimred/UMAP.js:361
_tail_int32Int32Array<ArrayBuffer> | undefined-dimred/UMAP.js:546
_type"array" | "matrix" | "typed"DR._typedimred/DR.js:54
_weightsnumber[] | undefined-dimred/UMAP.js:362
XMatrixDR.Xdimred/DR.js:56
YMatrixDR.Ydimred/UMAP.js:96

Accessors

projection

Get Signature

ts
get projection(): T;

Defined in: dimred/DR.js:219

Returns

T

The projection in the type of input X.

Inherited from

ts
DR.projection

Methods

[dispose]()

ts
dispose: void;

Defined in: dimred/DR.js:320

Alias of release for the using declaration, so a hand-driven run frees its buffers when the block exits. Note that transform and a completed or break-ed generator() already release on their own — this only matters for a generator abandoned part way.

js
using tsne = new TSNE(X, { d: 2 });
const steps = tsne.generator(500);
steps.next(); // buffers released when the enclosing block exits

Returns

void

Inherited from

ts
DR.[dispose]

check_init()

ts
check_init(): DR<T, ParametersUMAP>;

Defined in: dimred/DR.js:210

If the respective DR method has an init function, call it before transform.

Returns

DR<T, ParametersUMAP>

Inherited from

ts
DR.check_init

generator()

ts
generator(iterations?: number): Generator<T, T, void>;

Defined in: dimred/UMAP.js:399

Parameters

ParameterTypeDefault valueDescription
iterations?number350Number of iterations. Default is 350

Returns

Generator<T, T, void>

Overrides

ts
DR.generator

graph()

ts
graph(): {
  cols: number[] | undefined;
  rows: number[] | undefined;
  weights: number[] | undefined;
};

Defined in: dimred/UMAP.js:370

Returns

ts
{
  cols: number[] | undefined;
  rows: number[] | undefined;
  weights: number[] | undefined;
}
NameTypeDefined in
colsnumber[] | undefineddimred/UMAP.js:372
rowsnumber[] | undefineddimred/UMAP.js:372
weightsnumber[] | undefineddimred/UMAP.js:372

init()

ts
init(): UMAP<T>;

Defined in: dimred/UMAP.js:349

Computes all necessary

Returns

UMAP<T>

Overrides

ts
DR.init

parameter()

Call Signature

ts
parameter(): ParametersUMAP;

Defined in: dimred/DR.js:82

Get all Parameters.

Returns

ParametersUMAP

Inherited from
ts
DR.parameter

Call Signature

ts
parameter<K>(name: K): ParametersUMAP[K];

Defined in: dimred/DR.js:88

Get value of given parameter.

Type Parameters
Type ParameterDescription
K extends keyof ParametersUMAP
Parameters
ParameterTypeDescription
nameKName of the parameter.
Returns

ParametersUMAP[K]

Inherited from
ts
DR.parameter

Call Signature

ts
parameter<K>(name: K, value: ParametersUMAP[K]): UMAP<T>;

Defined in: dimred/DR.js:95

Set value of given parameter.

Type Parameters
Type ParameterDescription
K extends keyof ParametersUMAP
Parameters
ParameterTypeDescription
nameKName of the parameter.
valueParametersUMAP[K]Value of the parameter to set.
Returns

UMAP<T>

Inherited from
ts
DR.parameter

release()

ts
release(): UMAP<T>;

Defined in: dimred/DR.js:302

Hands back the WASM buffers this instance is holding.

Only needed after driving generator() by hand and stopping early — a plain transform(), or a for…of over generator() (including one you break), already releases when it ends. It frees only this method's buffers, never another running instance's, and the next run simply reallocates, so it is safe to call at any time, more than once, and while other instances are mid-run.

Returns

UMAP<T>

Example

ts
const tsne = new TSNE(X, { d: 2 });
const steps = tsne.generator(500);
steps.next();
tsne.release(); // stop early and give the buffers back

Inherited from

ts
DR.release

transform()

ts
transform(iterations?: number): T;

Defined in: dimred/UMAP.js:379

Parameters

ParameterTypeDefault valueDescription
iterations?number350Number of iterations. Default is 350

Returns

T

Overrides

ts
DR.transform

transform_async()

ts
transform_async(...args: unknown[]): Promise<T>;

Defined in: dimred/DR.js:241

Computes the projection.

Parameters

ParameterTypeDescription
...argsunknown[]Arguments the transform method of the respective DR method takes.

Returns

Promise<T>

The dimensionality reduced dataset.

Inherited from

ts
DR.transform_async

generator()

ts
static generator<T>(X: T, parameters?: Partial<ParametersUMAP>): Generator<T, T, void>;

Defined in: dimred/UMAP.js:614

Type Parameters

Type ParameterDescription
T extends InputType

Parameters

ParameterTypeDescription
XT-
parameters?Partial<ParametersUMAP>-

Returns

Generator<T, T, void>

Overrides

ts
DR.generator

transform()

ts
static transform<T>(X: T, parameters?: Partial<ParametersUMAP>): T;

Defined in: dimred/UMAP.js:603

Type Parameters

Type ParameterDescription
T extends InputType

Parameters

ParameterTypeDescription
XT-
parameters?Partial<ParametersUMAP>-

Returns

T

Overrides

ts
DR.transform

transform_async()

ts
static transform_async<T>(X: T, parameters?: Partial<ParametersUMAP>): Promise<T>;

Defined in: dimred/UMAP.js:626

Type Parameters

Type ParameterDescription
T extends InputType

Parameters

ParameterTypeDescription
XT-
parameters?Partial<ParametersUMAP>-

Returns

Promise<T>

Overrides

ts
DR.transform_async