Ho un piccolo problema per eseguire TSNE sul mio set di dati, utilizzando la somiglianza del coseno.somiglianza coseno TSNE in sklearn.manifold
ho calcolato la somiglianza coseno di tutti i miei vettori, quindi ho una matrice quadrata che contiene la mia somiglianza coseno:
A = [[ 1 0.7 0.5 0.6 ]
[ 0.7 1 0.3 0.4 ]
[ 0.5 0.3 1 0.1 ]
[ 0.6 0.4 0.1 1 ]]
Poi, sto usando TSNE così:
A = np.matrix([[1, 0.7,0.5,0.6],[0.7,1,0.3,0.4],[0.5,0.3,1,0.1],[0.6,0.4,0.1,1]])
model = manifold.TSNE(metric="precomputed")
Y = model.fit_transform(A)
Ma io non sono sicuro che l'utilizzo metrico precalcolate mantenere il senso della mia somiglianza coseno:
#[documentation][1]
If metric is “precomputed”, X is assumed to be a distance matrix
Ma quando provo ad usare coseno metrica, ho ottenuto un errore:
A = np.matrix([[1, 0.7,0.5,0.6],[0.7,1,0.3,0.4],[0.5,0.3,1,0.1],[0.6,0.4,0.1,1]])
model = manifold.TSNE(metric="cosine")
Y = model.fit_transform(A)
raise ValueError("All distances should be positive, either "
ValueError: All distances should be positive, either the metric or
precomputed distances given as X are not correct
Quindi la mia domanda è, come è possibile eseguire TSNE utilizzando coseno metrica su un set di dati esistente (matrice di similarità)?
quale versione è scikit imparare? - Il codice funziona per me. – cel
Spiacente, aggiorno il mio codice, uso la funzione 'fit_transform' per trasformare il mio input. e l'errore sembra provenire da lì ... ho codificato una piccola parte che non funziona: 'da sklearn importazione collettore NumPy importazione come np A = np.matrix ([[1, 0,7 , 0,5,0.6], [1, 0,7,0,5,0,6], [0,5,0,3,1,0,1], [0,6,0,4,0,1,1]]) model = manifold.TSNE (metrico = "coseno") Y = model.fit_transform (A) ' – HugoLasticot