Skip to content

jiwoongim/ft-SNE

Repository files navigation

Stochastic Neighbour Embedding under f-divergence

Python (Theano) implementation of Stochastic Neighbour Embedding under f-divergence code provided by Daniel Jiwoong Im, Nakul Verma, Kristin Branson

ft-Stochastic Neighbour Embedding (ft-SNE) is f-divergence based loss criteria for t-SNE. The main idea is that different f-divergence produce better low-dimensional visualizations for different types of structure in data.

For more information, see

@article{Im2018,
    title={Stochastic Neighbour Embedding under f-divergence},
    author={Im, Daniel Jiwoong and Verma, Nakul and Branson, Kristin},
    year={2018}
}

If you use this in your research, we kindly ask that you cite the above arxiv paper.

Dependencies

Packages

How to run

Entry code for MNIST, MNIST1, FACE, NEWS

    python ./main.py --datatype mnist  --divtypet kl --perplexity 100
    python ./main.py --datatype mnist1 --divtypet rkl --perplexity 100
    python ./main.py --datatype face   --divtypet rkl --perplexity 100
    python ./main.py --datatype news   --divtypet kl --perplexity 100

Entry code for runninng your own data:

    python ./run.py --divtypet kl --perplexity 100 --dataset_path [YOUR OWN DATADIR]

Note that the name of data and labels file must be in NumPy array (npy) file. Data and label file name should be data.npy (NxD matrix) and label.npy (Nx1 array), where N is number of data points, D is number of features (see line 44-45 in run.py for details).

Illustration

ft-SNE embeddings obtained with interpolated divergences between KL and RKL. The perpleixty for each row corresponds to 10, 100, and 500 respectively:

Image of cluster embedding

Image of manifold embedding

About

f-divergence based t-SNE

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages