2013-12-11 9 views
5

Non riesco a comprendere un caso d'uso specifico della classe sklearn.cluster.SpectralClustering come indicato nella documentazione ufficiale here. Diciamo che voglio usare la mia matrice di affinità per eseguire il clustering. Ho un'istanza di un oggetto della classe SpectralClustering come segue: Utilizzo della classe sklearn.cluster.SpectralClustering con parametro affinity = 'precomputed'

from sklearn.clustering import SpectralClustering 

cl = SpectralClustering(n_clusters=5,affinity='precomputed') 

La documentazione per il parametro affinity sopra è il seguente:

affinità: stringa, matrice simile o richiamabile, default 'RBF'

Se una stringa, può essere uno dei "neighbor_vicini", "precomputed", "rbf" o uno dei kernel supportato da sklearn.metrics.pairwise_kernels. Devono essere utilizzati solo i kernel che producono punteggi di somiglianza (valori non negativi che aumentano con la somiglianza). Questa proprietà non è controllata dall'algoritmo di clustering.

Ora, oggetto cl ha un metodo fit per cui la documentazione sul suo unico parametro X è la seguente:

X: array simili o matrice sparsa, forma (N_SAMPLES, n_features)

O, se == affinità precomputed, una matrice di affinità precalcolate di forma (N_SAMPLES, N_SAMPLES)

Qui è dove si confondono. Sto usando la mia matrice di affinità, dove una misura di 0 significa che due punti sono identici, con un numero più alto che significa che due punti sono più dissimili. Tuttavia, le altre scelte per il parametro affinity effettivamente prendere un insieme di dati e produrre una somiglianza matrice, per cui superiore valori sono indicativi di più somiglianza, e bassi valori indicano dissomiglianza (come il kernel base radiale).

Così quando si utilizza il metodo fit sulla mia istanza di SpectralClustering, faccio io in realtà bisogno di trasformare la mia matrice di affinità in una matrice di similarità prima di passarlo alla chiamata fit metodo come parametro X? La stessa pagina di documentazione fa una nota sulla trasformazione della distanza in somiglianze ben educate, ma non indica esplicitamente dove dovrebbe essere eseguita questa fase, e tramite quale chiamata di metodo.

risposta

3

diritta dalla documentazione:

Se si dispone di una matrice di affinità, ad esempio una matrice di distanza, per cui 0 indica elementi identici, e valori elevati significa elementi molto dissimili, può essere trasformato in una somiglianza matrice che è adatto per l'algoritmo applicando il kernel gaussiano (RBF, calore):

np.exp(- X ** 2/(2. * delta ** 2)) 

questo va nel proprio codice, e il risultato di questo può essere passato a fit. Ai fini di questo algoritmo, affinità significa somiglianza, non distanza.

+0

Grazie - ho notato che il frammento, ma è stato preso sulla formulazione, vale a dire.affinità che significa somiglianza, in contrapposizione alla distanza. –

+0

Mi chiedo cosa significa "delta"? come impostare questo parametro? – eastdog

Problemi correlati