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.
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).
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.
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.
syntax sugar
Parameters
opt
field
defaultval
return 0 mean unit standard deviation random number
return random normal number
Parameters
mu
std
utilitity that creates contiguous vector of zeros of size n
Parameters
n
utility that returns 2d array filled with random numbers or with value s, if provided
Parameters
n
d
s
compute L2 distance between two vectors
Parameters
x1
x2
compute pairwise distance in all vectors in X
Parameters
X
compute (p_{i|j} + p_{j|i})/(2n)
Parameters
D
perplexity
tol
helper function
Parameters
x
t-SNE visualization algorithm
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.
Send questions to @karpathy.
MIT