@aidanconnelly/tsnejs
Version:
t-SNE visualization algorithm
141 lines (87 loc) • 3.21 kB
Markdown
# 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](http://cs.stanford.edu/people/karpathy/tsnejs/) and more
description.
There is also the
[t-SNE CSV demo](http://cs.stanford.edu/people/karpathy/tsnejs/csvdemo.html)
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](http://jmlr.csail.mit.edu/papers/volume9/vandermaaten08a/vandermaaten08a.pdf).
## Example
```shell
npm --save i /tsnejs
```
```javascript
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
<!-- Generated by documentation.js. Update this documentation by updating the source code. -->
### getopt
syntax sugar
**Parameters**
- `opt`
- `field`
- `defaultval`
### return_v
return 0 mean unit standard deviation random number
### randn
return random normal number
### 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
### L2
compute L2 distance between two vectors
### xtod
compute pairwise distance in all vectors in X
### d2p
compute (p_{i|j} + p_{j|i})/(2n)
### 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](http://cs.stanford.edu/people/karpathy/tsnejs/csvdemo.html).
- By Laurens, [here](http://homepage.tudelft.nl/19j49/tsnejs/), which
takes data in different format and can also use Google Spreadsheet
input.
## About
Send questions to [](https://twitter.com/karpathy).
## License
MIT