@jwalsh/tsnejs

0.1.3 • Public • Published

tSNEJS

tSNEJS is an implementation of t-SNE visualization algorithm in Javascript.

t-SNE is a visualization algorithm that embeds things in 2 or 3 dimensions. If you have some data and you can measure their pairwise differences, t-SNE visualization can help you identify clusters in your data.

Online demo

The main project website has a live example and more description.

There is also the t-SNE CSV demo that allows you to simply paste CSV data into a textbox and tSNEJS computes and visualizes the embedding on the fly (no coding needed).

Research Paper

The algorithm was originally described in this paper:

L.J.P. van der Maaten and G.E. Hinton.
Visualizing High-Dimensional Data Using t-SNE. Journal of Machine Learning Research
9(Nov):2579-2605, 2008.

You can find the PDF here.

Example

npm --save i @jwalsh/tsnejs
import * as tsnejs from '@jwalsh/tsnejs';

const opt = {
  epsilon: 10,    // epsilon is learning rate (10 = default)
  perplexity: 30, // roughly how many neighbors each point influences (30 = default)
  dim: 2 // dimensionality of the embedding (2 = default)
};

const tsne = new tsnejs.tSNE(opt); // create a tSNE instance

// initialize data. Here we have 3 points and some example pairwise dissimilarities
const dists = [[1.0, 0.1, 0.2], [0.1, 1.0, 0.3], [0.2, 0.1, 1.0]];
tsne.initDataDist(dists);

// every time you call this, solution gets better
[...Array(500)].forEach((_, i) => tsne.step());

const Y = tsne.getSolution(); // Y is an array of 2-D points that you can plot

The data can be passed to tSNEJS as a set of high-dimensional points using the tsne.initDataRaw(X) function, where X is an array of arrays (high-dimensional points that need to be embedded). The algorithm computes the Gaussian kernel over these points and then finds the appropriate embedding.

API

getopt

syntax sugar

Parameters

  • opt
  • field
  • defaultval

return_v

return 0 mean unit standard deviation random number

randn

return random normal number

Parameters

  • mu
  • std

zeros

utilitity that creates contiguous vector of zeros of size n

Parameters

  • n

randn2d

utility that returns 2d array filled with random numbers or with value s, if provided

Parameters

  • n
  • d
  • s

L2

compute L2 distance between two vectors

Parameters

  • x1
  • x2

xtod

compute pairwise distance in all vectors in X

Parameters

  • X

d2p

compute (p_{i|j} + p_{j|i})/(2n)

Parameters

  • D
  • perplexity
  • tol

sign

helper function

Parameters

  • x

tSNE

t-SNE visualization algorithm

Web Demos

There are two web interfaces to this library that we are aware of:

  • By Andrej, here.
  • By Laurens, here, which takes data in different format and can also use Google Spreadsheet input.

About

Send questions to @karpathy.

License

MIT

Dependencies (2)

Dev Dependencies (9)

Package Sidebar

Install

npm i @jwalsh/tsnejs

Weekly Downloads

2

Version

0.1.3

License

MIT

Last publish

Collaborators

  • jwalsh