Skip to content
Snippets Groups Projects
Commit a8745458 authored by ac_fx's avatar ac_fx
Browse files

tsneCluster

parent a155b5e1
Branches
No related tags found
No related merge requests found
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
% ******************************************************************************/ % ******************************************************************************/
% distance matrix A into k clusters % distance matrix A into k clusters
function idx= SpectralCluster(A,k) function [idx,Y]= SpectralCluster(A,k)
NREP=50; NREP=50;
if (1==k) if (1==k)
......
% andy cohen -- Dec 16 2021
%
% tsne spectral clustering
function [idx,Y] = tsneCluster(distanceMatrix,K)
if (1==K)
idx=ones(size(A,2),1);
return;
end
% # of reps for kmeans
NREP=50;
% we use the matlab tsne with custom distance
% pass the distance matrix to our embedded function here
global tsneGlobalDistanceMatrix
tsneGlobalDistanceMatrix=distanceMatrix;
xsne=repmat([1:size(distanceMatrix,1)]',1,K);
Y=tsne(xsne,'distance',@tsneDistance,'numDimensions',K);
4;
idx=kmeans(Y,K,'emptyaction','singleton','replicates',NREP);
function d=tsneDistance(X,Y)
global tsneGlobalDistanceMatrix
for i=1:size(Y,1)
d(i,1)=tsneGlobalDistanceMatrix(X(1),Y(i,1));
end
4;
% goTSNE.m
targetSize=100;
tsneConfusion=[];
spectralConfusion=[];
NUMBER_OF_TRIALS=100;
p=startParallel(128);
parfor nTrial=1:NUMBER_OF_TRIALS
target=[0:9];
K=length(target);
cardinality=ceil(targetSize/length(target));
xDigits=getNISTdigits(target,cardinality);
dDigits=MNISTdistance(xDigits);
idxSpectral=Cluster.SpectralCluster(dDigits,10);
cx=updateConfusion(xDigits,{},K,0,idxSpectral);
spectralConfusion(:,:,nTrial)=cx{10};
tic()
[idxTSNE,Y]=Cluster.tsneCluster(dDigits,10);
cx=updateConfusion(xDigits,{},K,0,idxTSNE);
tsneConfusion(:,:,nTrial)=cx{10};
toc()
5;
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment