Nourishing Pizza Microservice

    @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

    Install

    npm i @jwalsh/tsnejs

    DownloadsWeekly Downloads

    3

    Version

    0.1.3

    License

    MIT

    Last publish

    Collaborators

    • jwalsh