:py:mod:`evomap.mapping._tsne`
==============================

.. py:module:: evomap.mapping._tsne

.. autoapi-nested-parse::

   T-Distributed Stochastic Neighborhood Embedding, as propsoed in:

   Van der Maaten, L., & Hinton, G. (2008). Visualizing data using t-SNE. Journal of machine learning research, 9(11).



Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   evomap.mapping._tsne.TSNE



Functions
~~~~~~~~~

.. autoapisummary::

   evomap.mapping._tsne._calc_p_matrix
   evomap.mapping._tsne._check_prepare_tsne
   evomap.mapping._tsne.sqeuclidean_dist
   evomap.mapping._tsne.calc_q_matrix
   evomap.mapping._tsne._kl_divergence
   evomap.mapping._tsne._kl_divergence_grad
   evomap.mapping._tsne.cond_to_joint



Attributes
~~~~~~~~~~

.. autoapisummary::

   evomap.mapping._tsne.EPSILON


.. py:data:: EPSILON
   :value: 1e-12

   

.. py:class:: TSNE(n_dims=2, perplexity=15, n_iter=2000, stop_lying_iter=250, early_exaggeration=4, initial_momentum=0.5, final_momentum=0.8, eta='auto', n_iter_check=50, init=None, verbose=0, input_type='distance', max_halves=5, tol=0.001, n_inits=1, step_size=1)


   .. py:method:: fit(X)


   .. py:method:: fit_transform(X)



.. py:function:: _calc_p_matrix(X, included, input_type, perplexity)


.. py:function:: _check_prepare_tsne(model, X)

   Check and, if necessary, prepare data for t-SNE.

   :param model: Model object.
   :type model: TSNE or EvoMap

   :returns: Prepared input data
   :rtype: ndarray of shape (n_samples, n_samples)


.. py:function:: sqeuclidean_dist(Y)


.. py:function:: calc_q_matrix(Y, inclusions)

   Calculate Q-Matrix of joint probabilities in low-dim space.

   :param Y {np.ndarray} --:
   :type Y {np.ndarray} --: n,2
   :param exclusions {np.ndarray} -- condensed-dist-mat indices for exclusions:

   :returns: Q {np.ndarray} -- (n,n) array of joint probabilities in low-dim space.
             dist {np.ndarray} -- (n,n) array of squared euclidean distances


.. py:function:: _kl_divergence(Y, P, compute_error=True, compute_grad=True)


.. py:function:: _kl_divergence_grad(Y, P, Q, dist)

   Calculate gradient of KL-divergence dC/dY.

   :param Y {np.ndarray} --:
   :type Y {np.ndarray} --: n,2
   :param P {np.ndarray} -- condensed-matrix of joint probabilities:
   :type P {np.ndarray} -- condensed-matrix of joint probabilities: high dim
   :param Q {np.ndarray} -- condensed-matrix of joint probabilities:
   :type Q {np.ndarray} -- condensed-matrix of joint probabilities: low dim
   :param dist {np.ndarray} -- condensed-matrix of sq.euclidean distances:

   :returns: dY {np.ndarray} -- (n,2) array of gradient values


.. py:function:: cond_to_joint(P)

   Take an asymmetric conditional probability matrix and convert it to a
   symmetric joint probability matrix.

   Symmetrizes and normalizes the matrix.


