Inverse t-SNE

Hi,
I have t-sne output of a dataset that involves two clusters and I want to label all data of dataset according to this t-sne output.
rng default % for reproducibility
Y = tsne(Data);
gscatter(Y(:,1),Y(:,2))
Data is a matrix which has 2779x204 dimension, Y has 2779x2 matrix and gsactter visulizes the output. When I click one point in gscatter, I can get the observation value that matches to Y but I want to get group of observation values.
Is there any way to get multiple observation values from gscatter or another way to find inverse t-sne?

Answers (1)

gscatter takes a minimum of 3 input arguments. You're passing in only 2. What is your group identification array?
You can use masking to get the values in some rectangle.
x = Y(:, 1);
y = Y(:, 2);
indexesInBox = (x > xmin) & (x <= xmax) & (y >= ymin) & (y <= ymax); % Logical vector.
% Extract points in the box.
xDataInBox = x(indexesInBox);
yDataInBox = y(indexesInBox);
See drawing rectangle demo, attached.

3 Comments

Okan DÜZYEL
Okan DÜZYEL on 13 Sep 2022
I am nut sure your suggestion is really fitting for me.
Because, I have visualized output like that:
I can see the clusters but I can't recognize which data they are in the dataset. I just want to label them according to that visualized output.
You have no clusters (yet). This is just a set of (x,y) data. You have no clusters or groups identified even though you think you can see them. For the data you showed, I highly recommend dbscan
A demo is attached.
Okan DÜZYEL
Okan DÜZYEL on 14 Sep 2022
It is very helpful for me. Thanks a lot :)

Sign in to comment.

Categories

Asked:

on 13 Sep 2022

Commented:

on 14 Sep 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!