0

Ich versuche, tsne auf einer sehr kargen Matrix mit vorberechneten Entfernungswerten anzuzeigen, aber ich habe Probleme damit.sklear tsne mit spärlicher Matrix

Es läuft darauf hinaus, diese nach unten:

row = np.array([0, 2, 2, 0, 1, 2]) 
col = np.array([0, 0, 1, 2, 2, 2]) 
distances = np.array([.1, .2, .3, .4, .5, .6]) 
X = csc_matrix((distances, (row, col)), shape=(3, 3)) 
Y = TSNE(metric='precomputed').fit_transform(X) 

Allerdings bekomme ich diesen Fehler:

TypeError: A sparse matrix was passed, but dense data is required for method="barnes_hut". Use X.toarray() to convert to a dense numpy array if the array is small enough for it to fit in memory. Otherwise consider dimensionality reduction techniques (e.g. TruncatedSVD)

Ich will nicht TruncatedSVD auszuführen, da ich Entfernungen bereits berechnet.

Wenn ich die method='exact' ändern, erhalte ich einen anderen Fehler (die etwas fraglich ist):

NotImplementedError: >= and <= don't work with 0.

HINWEIS: meine Distanzmatrix über 100k x 100k mit etwa 1 M nicht Null-Werten ist.

Irgendwelche Ideen?

Antwort

0

Ich denke, das Ihr Problem lösen sollte:

X = csr_matrix((distances, (row, col)), shape=(3, 3)).todense() 

Wenn Sie wirklich csr_matrix statt csc_matrix

+0

Ich dachte, es war klar, ment ich schwach besetzte Matrizen benötigt .. todense eine Memory ergibt. –

Verwandte Themen