Il clustering gerarchico con matrice di somiglianza del coseno precomputata utilizzando Scikit Learn produce errore

datascience.stackexchange https://datascience.stackexchange.com/questions/51970

Domanda

Vogliamo usare la somiglianza del coseno con il clustering gerarchico e abbiamo già calcolati somiglianze del coseno. Nella documentazione Sklearn.cluster.AggromerativeClustering dice:

Una matrice di distanza (anziché una matrice di somiglianza) è necessaria come input per il metodo di adattamento.

Quindi, abbiamo convertito somiglianze del coseno con le distanze come

distance = 1 - similarity

Il nostro codice Python produce errori al fit() metodo alla fine. (Non sto scrivendo il vero valore di X Nel codice, poiché è molto grande.) X è solo una matrice di somiglianza del coseno con valori convertiti in distanza come scritto sopra. Notare la diagonale, è tutto 0.) Ecco il codice:

import pandas as pd
import numpy as np 
from sklearn.cluster import AgglomerativeClustering

X = np.array([[0,0.3,0.4],[0.3,0,0.7],[0.4,0.7,0]])

cluster = AgglomerativeClustering(affinity='precomputed')  
cluster.fit(X)

L'errore è:

runfile('/Users/stackoverflowuser/Desktop/4.2/Pr/untitled0.py', wdir='/Users/stackoverflowuser/Desktop/4.2/Pr')
Traceback (most recent call last):

  File "<ipython-input-1-b8b98765b168>", line 1, in <module>
    runfile('/Users/stackoverflowuser/Desktop/4.2/Pr/untitled0.py', wdir='/Users/stackoverflowuser/Desktop/4.2/Pr')

  File "/anaconda2/lib/python2.7/site-packages/spyder_kernels/customize/spydercustomize.py", line 704, in runfile
    execfile(filename, namespace)

  File "/anaconda2/lib/python2.7/site-packages/spyder_kernels/customize/spydercustomize.py", line 100, in execfile
    builtins.execfile(filename, *where)

  File "/Users/stackoverflowuser/Desktop/4.2/Pr/untitled0.py", line 84, in <module>
    cluster.fit(X)

  File "/anaconda2/lib/python2.7/site-packages/sklearn/cluster/hierarchical.py", line 795, in fit
    (self.affinity, ))

ValueError: precomputed was provided as affinity. Ward can only work with euclidean distances.

C'è qualcosa che posso fornire? Grazie già.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top